匹配 Swift 中的独立子字符串

Matching stand-alone substrings in Swift

我想检查一个字符串是否是另一个字符串的一部分,但只是作为一个独立的术语,而不是另一个词的一部分。我在 Swift.

工作

例如这是我希望检查 "mon"

的内容

执行此操作的好方法是什么? (在 containsString 和正则表达式等 NSString 函数之间来回切换)

使用不区分大小写修饰符的单词边界。

"(?i)\bmon\b"

DEMO

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]