从字符串中提取文本

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] 解决方案,您将只获得数组的第一个条目(在您的特定示例中:数组只有一个条目,好的),并且, 如果数组为空,给你一个运行时异常。