【发布时间】:2014-11-15 10:42:17
【问题描述】:
我遇到了和这个问题一样的问题:
How do I check if a string contains another string in Swift?
但现在几个月后我想知道是否可以不使用 NSString 来完成? 我很好很简单的包含方法就可以了。 我搜索了网络和文档,但一无所获!
【问题讨论】:
我遇到了和这个问题一样的问题:
How do I check if a string contains another string in Swift?
但现在几个月后我想知道是否可以不使用 NSString 来完成? 我很好很简单的包含方法就可以了。 我搜索了网络和文档,但一无所获!
【问题讨论】:
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/
【讨论】:
StringProtocol的东西——所以它也适用于String。
StringProtocol?developer.apple.com/documentation/swift/stringprotocol/…,比range(of:)更方便优雅的方式
只是为了演示选项的使用。
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")
}
【讨论】:
我为 SWIFT 3.0 编写了一个关于 String 的扩展,这样我就可以简单地调用 absoluteString.contains(string: "/kredit/")
extension String {
public func contains(string: String)-> Bool {
return self.rangeOfString(string) != nil
}
}
【讨论】:
同样的方式,只是使用 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 的第一个巧合/匹配,如果您打印range,您将得到类似2..<4 {^_^} -- > if let range = string.rangeOfString("is") { print(range) }
rangeOfString 是一个NSString 方法。