在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.0
let str = "Hello Swift"
if str.lowercased().contains("Swift".lowercased()) {
print("String Contains Another String")
} else {
print("Not Exists")
}
输出
String Contains Another String
其他回答
你可以用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.别忘了导入粉底
脚注
只要记住,在字符串上使用集合函数有一些边缘情况,可能会给你意想不到的结果,例如在处理表情符号或其他字母群(如重音字母)时。
在iOS 8和更新版本中,你可以使用这两个NSString方法:
@availability(iOS, introduced=8.0)
func containsString(aString: String) -> Bool
@availability(iOS, introduced=8.0)
func localizedCaseInsensitiveContainsString(aString: String) -> Bool
有了swift 4的新语法,你就可以
字符串。包含(“Swift 4是最好的”)
String是你的字符串变量
在Xcode 7.1和Swift 2.1中,containsString()为我工作得很好。
let string = "hello swift"
if string.containsString("swift") {
print("found swift")
}
斯威夫特4:
let string = "hello swift"
if string.contains("swift") {
print("found swift")
}
一个不区分大小写的Swift 4示例:
let string = "Hello Swift"
if string.lowercased().contains("swift") {
print("found swift")
}
或者使用不区分大小写的字符串扩展名:
extension String {
func containsIgnoreCase(_ string: String) -> Bool {
return self.lowercased().contains(string.lowercased())
}
}
let string = "Hello Swift"
let stringToFind = "SWIFT"
if string.containsIgnoreCase(stringToFind) {
print("found: \(stringToFind)") // found: SWIFT
}
print("string: \(string)")
print("stringToFind: \(stringToFind)")
// console output:
found: SWIFT
string: Hello Swift
stringToFind: SWIFT
这是我在快速操场上的第一次尝试。 我通过提供两个新函数(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
我欢迎任何反馈:)