在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 3:在这里你可以看到我的智能搜索扩展从字符串,让你对字符串进行搜索,看看它是否包含,或者可能过滤一个基于搜索文本的集合。
https://github.com/magonicolas/Swift-Smart-String-Search
其他回答
Swift 5,不区分大小写:
如果string.localizedLowercase.contains(“迅速”.localizedLowercase) {
这是我在快速操场上的第一次尝试。 我通过提供两个新函数(contains和containsIgnoreCase)来扩展String
extension String {
func contains(other: String) -> Bool{
var start = startIndex
do{
var subString = self[Range(start: start++, end: endIndex)]
if subString.hasPrefix(other){
return true
}
}while start != endIndex
return false
}
func containsIgnoreCase(other: String) -> Bool{
var start = startIndex
do{
var subString = self[Range(start: start++, end: endIndex)].lowercaseString
if subString.hasPrefix(other.lowercaseString){
return true
}
}while start != endIndex
return false
}
}
像这样使用它
var sentence = "This is a test sentence"
sentence.contains("this") //returns false
sentence.contains("This") //returns true
sentence.containsIgnoreCase("this") //returns true
"This is another test sentence".contains(" test ") //returns true
我欢迎任何反馈:)
Swift 3:在这里你可以看到我的智能搜索扩展从字符串,让你对字符串进行搜索,看看它是否包含,或者可能过滤一个基于搜索文本的集合。
https://github.com/magonicolas/Swift-Smart-String-Search
在Swift 4.2中
Use
func contains(_ str: String) -> Bool
例子
let string = "hello Swift"
let containsSwift = string.contains("Swift")
print(containsSwift) // prints true
从文档中可以看出,在String对象上调用containsString()应该可以工作:
Swift的String类型无缝地桥接到Foundation的NSString 类。如果您正在使用Cocoa中的Foundation框架或 Cocoa Touch,整个NSString API可以调用任何 您所创建的字符串值,以及所描述的字符串特性 在本章中。你也可以在任何API中使用String值 需要一个NSString实例。
然而,事情似乎并不是这样的。
如果你尝试使用someString.containsString(anotherString),你会得到一个编译时错误,说明'String'不包含名为'containsString'的成员。
所以,你剩下几个选项,其中一个是通过使用bridgetooobjecvec()显式地将你的String桥接到Objective-C,其他两个涉及显式地使用NSString,最后一个涉及将String转换为NSString
通过桥接,你会得到:
var string = "hello Swift"
if string.bridgeToObjectiveC().containsString("Swift") {
println("YES")
}
通过显式地将字符串输入为NSString,你会得到:
var string: NSString = "hello Swift"
if string.containsString("Swift") {
println("YES")
}
如果你有一个已经存在的String,你可以使用NSString(String:)初始化一个NSString:
var string = "hello Swift"
if NSString(string: string).containsString("Swift") {
println("YES")
}
最后,你可以将一个现有的String转换为NSString,如下所示
var string = "hello Swift"
if (string as NSString).containsString("Swift") {
println("YES")
}