匹配 Swift 中的独立子字符串
Matching stand-alone substrings in Swift
我想检查一个字符串是否是另一个字符串的一部分,但只是作为一个独立的术语,而不是另一个词的一部分。我在 Swift.
工作
例如这是我希望检查 "mon"
的内容
- "Mon" 真
- "mon" 真
- “周一”真
- “星期一”真
- "Monday" 假
- "Monster" 假
- "Hormons" 假
执行此操作的好方法是什么? (在 containsString 和正则表达式等 NSString 函数之间来回切换)
使用不区分大小写修饰符的单词边界。
"(?i)\bmon\b"
let regex = NSRegularExpression(pattern: "\bmon\b", options: NSRegularExpressionOptions.CaseInsensitive, error: nil)!
func isMatch(str: String) -> Bool {
return regex.firstMatchInString(str, options: nil, range: NSRange(location: 0, length: str.utf16Count)) != Optional.None
}
["Mon", "mon", " Mon", " Mon " , "Monday", "Monster", "Hormons"].map(isMatch)
// yields [true, true, true, true, false, false, false]
以下适用于 Swift 2.
let regex = try! NSRegularExpression(pattern: "\bmon\b", options: NSRegularExpressionOptions.CaseInsensitive)
func isMatch(str: String) -> Bool {
return regex.firstMatchInString(str, options: .ReportCompletion , range: NSRange(location: 0, length: str.characters.count)) != Optional.None
}
["Mon", "mon", " Mon", " Mon " , "Monday", "Hormons"].map(isMatch)
// Yields [true, true, true, true, false, false]
我想检查一个字符串是否是另一个字符串的一部分,但只是作为一个独立的术语,而不是另一个词的一部分。我在 Swift.
工作例如这是我希望检查 "mon"
的内容- "Mon" 真
- "mon" 真
- “周一”真
- “星期一”真
- "Monday" 假
- "Monster" 假
- "Hormons" 假
执行此操作的好方法是什么? (在 containsString 和正则表达式等 NSString 函数之间来回切换)
使用不区分大小写修饰符的单词边界。
"(?i)\bmon\b"
let regex = NSRegularExpression(pattern: "\bmon\b", options: NSRegularExpressionOptions.CaseInsensitive, error: nil)!
func isMatch(str: String) -> Bool {
return regex.firstMatchInString(str, options: nil, range: NSRange(location: 0, length: str.utf16Count)) != Optional.None
}
["Mon", "mon", " Mon", " Mon " , "Monday", "Monster", "Hormons"].map(isMatch)
// yields [true, true, true, true, false, false, false]
以下适用于 Swift 2.
let regex = try! NSRegularExpression(pattern: "\bmon\b", options: NSRegularExpressionOptions.CaseInsensitive)
func isMatch(str: String) -> Bool {
return regex.firstMatchInString(str, options: .ReportCompletion , range: NSRange(location: 0, length: str.characters.count)) != Optional.None
}
["Mon", "mon", " Mon", " Mon " , "Monday", "Hormons"].map(isMatch)
// Yields [true, true, true, true, false, false]