如何退出没有正则表达式匹配的函数

时间:2019-03-27 00:42:44

标签: swift regex

尝试创建一个使用正则表达式匹配的函数以返回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)

上面的代码返回一个空数组。

0 个答案:

没有答案