从字符串中提取文本
Extracting text from a string
嗨,我有这个错误,我一直在想,说'[String]'类型的值没有成员'characters'
这是我的代码:
let sentence = "the mans states of this game are Jumping: 132.4 and Speed: 142.192"
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex, options: [])
let nsString = text as NSString
let results = regex.matchesInString(text,
options: [], range: NSMakeRange(0, nsString.length))
return results.map { nsString.substringWithRange([=10=].range)}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
let sentJumping = matchesForRegexInText("Jumping:\s+\d+.\d+", text: sentence)
print(sentJumping)
let gallNumb = sentJumping.characters.split(":").map{ String([=10=]) } // The error I'm getting is on this line
你可以试试
let gallNumb = sentJumping[0].characters.split(":").map{ String([=10=]) }
你的函数returns一个数组。您需要使用 [0]
来检索您想要的结果。
已编辑
在尝试使用字符串方法 characters
之前,您需要将字符串数组 sentJumping
转换为 String
。现在,sentJumping
是 [String]
类型(数组)。一种方法是将数组缩减为一个字符串,作为字符串数组中所有字符串条目的总和。
尝试用以下代码替换最后一行代码
let gallNumb = sentJumping.reduce("", combine: +).characters.split(":").map{ String([=10=]) }
请注意,通过使用另一个答案中推荐的 sentJumping[0]
解决方案,您将只获得数组的第一个条目(在您的特定示例中:数组只有一个条目,好的),并且, 如果数组为空,给你一个运行时异常。
嗨,我有这个错误,我一直在想,说'[String]'类型的值没有成员'characters'
这是我的代码:
let sentence = "the mans states of this game are Jumping: 132.4 and Speed: 142.192"
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex, options: [])
let nsString = text as NSString
let results = regex.matchesInString(text,
options: [], range: NSMakeRange(0, nsString.length))
return results.map { nsString.substringWithRange([=10=].range)}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
let sentJumping = matchesForRegexInText("Jumping:\s+\d+.\d+", text: sentence)
print(sentJumping)
let gallNumb = sentJumping.characters.split(":").map{ String([=10=]) } // The error I'm getting is on this line
你可以试试
let gallNumb = sentJumping[0].characters.split(":").map{ String([=10=]) }
你的函数returns一个数组。您需要使用 [0]
来检索您想要的结果。
已编辑
在尝试使用字符串方法 characters
之前,您需要将字符串数组 sentJumping
转换为 String
。现在,sentJumping
是 [String]
类型(数组)。一种方法是将数组缩减为一个字符串,作为字符串数组中所有字符串条目的总和。
尝试用以下代码替换最后一行代码
let gallNumb = sentJumping.reduce("", combine: +).characters.split(":").map{ String([=10=]) }
请注意,通过使用另一个答案中推荐的 sentJumping[0]
解决方案,您将只获得数组的第一个条目(在您的特定示例中:数组只有一个条目,好的),并且, 如果数组为空,给你一个运行时异常。