代码之家  ›  专栏  ›  技术社区  ›  Bernd

在Swift中匹配独立子字符串

  •  1
  • Bernd  · 技术社区  · 11 年前

    我想检查一个字符串是否是另一个字符串的一部分,但仅作为一个独立的术语,而不是另一个单词的一部分。我在斯威夫特工作。

    E、 这是我希望检查的内容 “mon”

    • “周一” 真的
    • “mon” 真的
    • “周一” 真的
    • “周一” 真的
    • “星期一” 假的
    • “怪物” 假的
    • “荷尔蒙” 假的

    有什么好方法可以做到这一点?(在NSString函数之间来回切换,如 包含字符串 和正则表达式)

    3 回复  |  直到 11 年前
        1
  •  3
  •   Avinash Raj    11 年前

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

    "(?i)\\bmon\\b"
    

    DEMO

        2
  •  1
  •   Jean-Philippe Pellet    11 年前
    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]
    
        3
  •  0
  •   Mike Chirico    10 年前

    以下内容适用于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]