【发布时间】:2018-02-27 19:29:08
【问题描述】:
我正在使用以下扩展方法来获取子字符串的 NSRange 数组:
extension String {
func nsRangesOfString(findStr:String) -> [NSRange] {
let ranges: [NSRange]
do {
// Create the regular expression.
let regex = try NSRegularExpression(pattern: findStr, options: [])
// Use the regular expression to get an array of NSTextCheckingResult.
// Use map to extract the range from each result.
ranges = regex.matches(in: self, options: [], range: NSMakeRange(0, self.characters.count)).map {$0.range}
}
catch {
// There was a problem creating the regular expression
ranges = []
}
return ranges
}
}
但是,我不知道为什么有时它不起作用。这里有两个类似的案例,一个有效,另一个无效:
那个有效:
自我(字符串):
“וצפן (קרי: יִצְפֹּ֣ן) לַ֭יְשָׁרִים תּוּשִׁיָּ֑ה מָ֝גֵ֗ן לְהֵי תֹ
findStr:
"קרי:"
而那个没有:
自我(字符串):
"לִ֭נְצֹר אָרְח֣וֹת מִשְׁפָּ֑ט וְדֶ֖רֶךְ חסידו(חסידו)
findStr:
"קרי:"
(不过,另一种稳定的方法将是一个合适的答案。)
【问题讨论】:
-
很抱歉,请将示例字符串转换为英文好吗?
-
我可以,但这些不仅仅是随机字符串,它们是在我的应用程序中匹配的真实字符串,我想弄清楚为什么第二个不返回任何内容。
-
是否必须使用正则表达式来完成这样的任务?
-
否定。欢迎提出其他建议。
-
您实际上想在这里做什么?最终目标是什么?很高兴提出另一种方法,但我不知道您对此有何要求。