【问题标题】:Swift: String contains String (Without using NSString)?Swift:字符串包含字符串(不使用 NSString)?
【发布时间】:2014-11-15 10:42:17
【问题描述】:

我遇到了和这个问题一样的问题:

How do I check if a string contains another string in Swift?

但现在几个月后我想知道是否可以不使用 NSString 来完成? 我很好很简单的包含方法就可以了。 我搜索了网络和文档,但一无所获!

【问题讨论】:

标签: string swift


【解决方案1】:

String实际上通过StringProtocol提供了一个“包含”功能。
无需任何扩展:

let str = "asdf"
print(str.contains("sd") ? "yep" : "nope")

https://developer.apple.com/reference/swift/string https://developer.apple.com/documentation/swift/stringprotocol


如果你想检查你的字符串是否匹配特定的模式,我可以推荐关于 NSRegularExpressions 的 NSHipster 文章:http://nshipster.com/nsregularexpression/

【讨论】:

  • 这是检查字符串是否包含某个字符!
  • @EmilMarashliev 这是真的。但是另外你可以检查任何符合StringProtocol的东西——所以它也适用于String
  • 哈,你说得对,它来自StringProtocol?developer.apple.com/documentation/swift/stringprotocol/…,比range(of:)更方便优雅的方式
【解决方案2】:

只是为了演示选项的使用。

var string = "This is a test.  This is only a test. Not an Exam"

if string.range(of:"ex") != nil {
    print("yes")
}
if string.range(of:"ex", options: String.CompareOptions.caseInsensitive) != nil {
    print("yes")
}

【讨论】:

    【解决方案3】:

    我为 SWIFT 3.0 编写了一个关于 String 的扩展,这样我就可以简单地调用 absoluteString.contains(string: "/kredit/")

    extension String {
      public func contains(string: String)-> Bool {
          return self.rangeOfString(string) != nil
      }
    

    }

    【讨论】:

      【解决方案4】:

      同样的方式,只是使用 Swift 语法:

      let string = "This is a test.  This is only a test"
      
      if string.rangeOfString("only") != nil {
           println("yes")
      }
      

      对于 Swift 3.0

      if str.range(of: "abc") != nil{
           print("Got the string")
      }
      

      【讨论】:

      • “is”怎么样,我可以得到最后一个“is”吗?
      • @Zam 在这种情况下,它将返回is 的第一个巧合/匹配,如果您打印range,您将得到类似2..<4 {^_^} -- > if let range = string.rangeOfString("is") { print(range) }
      • 在 Swift 2 中仍然使用该语法吗?
      • rangeOfString 是一个NSString 方法。
      猜你喜欢
      • 1970-01-01
      • 2014-10-18
      • 2016-10-04
      • 2016-11-20
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多