尝试创建一个使用正则表达式匹配的函数以返回NSRange值数组,以与UITextView一起使用,以允许用户使用动画单击匹配的单词。
我认为解决方案是在没有正则表达式匹配的情况下突破该功能。我无法弄清楚在函数需要NSRange值的情况下如何执行此操作。
此外,当没有匹配项时,正则表达式函数 matches 不会返回nil。相反,它会自动返回一个空数组,该数组似乎使Guard语句无用。
功能如下:
func rangeOfSearchText(searchString: String, UIText: String) -> [NSRange] {
var matches:[NSTextCheckingResult]?
let regex = try! NSRegularExpression(pattern: searchString, options: .caseInsensitive)
matches = regex.matches(in: UIText, options: [], range: NSRange(location: 0, length: UIText.count))
guard let find = matches else {
//return need to find a way to break out of function if nil without returning an NSRange object...
}
var rangeArray:[NSRange] = []
for match in find {
rangeArray.append(match.range(at: 0))
}
return rangeArray
}
let sString = "z"
let longString = "I need a solution."
let test = rangeOfSearchText(searchString: sString, UIText: longString)
上面的代码返回一个空数组。