我有一个用泰语写的字 - > ความรัก
如何使用NSRegularExpression来匹配这个单词?
我尝试使用确切的单词,但它无效。
它甚至不在像regex101.com这样的网站上工作
这是我的代码(swift版本。但是在swift或obj中的答案很受欢迎)。以下代码位于我的playground文件中。我总是变得虚伪,永远不会真实。
let labelString = "ความรัก"
let regex = try NSRegularExpression(pattern: "ความรัก", options: [])
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, options:.ReportProgress, range:NSRange(location: 0, length: labelString.characters.count))
if (!NSEqualRanges(rangeOfFirstMatch, NSRange(location: NSNotFound, length: 0))) {
print(true)
} else {
print(false)
}
如果我用“" man"然而。我总能成真
答案 0 :(得分:6)
这个漏洞就在这里:
NSRange(location: 0, length: labelString.characters.count)
NSRegularExpression
使用基于UTF-16的计数和偏移,因此您需要传递包含基于UTF-16的位置和长度的范围。
尝试将包含NSRange
的行更改为:
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString,
options:.ReportProgress,
range:NSRange(location: 0, length: labelString.utf16.count))
我更喜欢这种表示法(功能相当):
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString,
options:.ReportProgress,
range:NSRange(0..<labelString.utf16.count))
(我不确定,但你确实需要.ReportProgress
?)