【问题标题】:Matching stand-alone substrings in Swift在 Swift 中匹配独立的子字符串
【发布时间】:2015-01-29 11:13:33
【问题描述】:

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

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

的内容
  • “星期一”
  • “周一”
  • “星期一”
  • “星期一”
  • “星期一”
  • “怪物”
  • “荷尔蒙”错误

有什么好的方法可以做到这一点? (在 containsString 和正则表达式等 NSString 函数之间来回切换)

【问题讨论】:

    标签: ios regex string swift nsstring


    【解决方案1】:

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

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

    DEMO

    【讨论】:

      【解决方案2】:
      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】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-06
          • 2017-10-10
          • 2021-08-25
          • 1970-01-01
          • 2014-08-08
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          相关资源
          最近更新 更多