在Objective-C中,检查NSString子字符串的代码是:
NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
NSLog(@"exists");
}
但是如何在Swift中做到这一点呢?
在Objective-C中,检查NSString子字符串的代码是:
NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
NSLog(@"exists");
}
但是如何在Swift中做到这一点呢?
当前回答
有了swift 4的新语法,你就可以
字符串。包含(“Swift 4是最好的”)
String是你的字符串变量
其他回答
在Swift 3中
if((a.range(of: b!, options: String.CompareOptions.caseInsensitive, range: nil, locale: nil)) != nil){
print("Done")
}
在这里的所有答案中,我认为它们要么不工作,要么有点hack(转换回NSString)。这个问题的正确答案很可能随着不同的beta版本而改变。
以下是我使用的方法:
let string: String = "hello Swift"
if string.rangeOfString("Swift") != nil
{
println("exists")
}
”!= nil”成为Beta 5的要求。
Xcode 8/Swift 3版本:
let string = "hello Swift"
if let range = string.range(of: "Swift") {
print("exists at range \(range)")
} else {
print("does not exist")
}
if let lowercaseRange = string.lowercased().range(of: "swift") {
print("exists at range \(lowercaseRange)")
} else {
print("does not exist")
}
你也可以使用contains:
string.contains("swift") // false
string.contains("Swift") // true
检查它是否包含“Hello”
let s = "Hello World"
if s.rangeOfString("Hello") != nil {
print("Yes it contains 'Hello'")
}
你可以用Swift做同样的事情:
斯威夫特&斯威夫特
在Swift 4中,字符串是字符值的集合,在Swift 2和3中不像这样,所以你可以使用更简洁的代码1:
let string = "hello Swift"
if string.contains("Swift") {
print("exists")
}
Swift 3.0 +
var string = "hello Swift"
if string.range(of:"Swift") != nil {
print("exists")
}
// alternative: not case sensitive
if string.lowercased().range(of:"swift") != nil {
print("exists")
}
年长的迅速
var string = "hello Swift"
if string.rangeOfString("Swift") != nil{
println("exists")
}
// alternative: not case sensitive
if string.lowercaseString.rangeOfString("swift") != nil {
println("exists")
}
我希望这是一个有用的解决方案,因为包括我在内的一些人在调用containsString().1时遇到了一些奇怪的问题
PS.别忘了导入粉底
脚注
只要记住,在字符串上使用集合函数有一些边缘情况,可能会给你意想不到的结果,例如在处理表情符号或其他字母群(如重音字母)时。