在Objective-C中,检查NSString子字符串的代码是:

NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
    NSLog(@"exists");
}

但是如何在Swift中做到这一点呢?


当前回答

SWIFT 4非常简单!!

if (yourString.contains("anyThing")) {
   print("Exist")
}

其他回答

这只是对答案的补充。

你也可以使用以下方法进行本地不区分大小写的测试:

 - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)aString

例子:

    import Foundation

    var string: NSString  =  "hello Swift"
   if string.localizedCaseInsensitiveContainsString("Hello") {
    println("TRUE")
}

更新

这是iOS和Mac OS X 10.10.x基础框架的一部分 在我最初发布的时候,它是10.10的一部分。

文档生成日期:2014-06-05 12:26:27 -0700 OS X版本说明 版权所有©2014苹果公司版权所有。 OS X 10.10发布说明Cocoa基础框架 NSString现在有以下两个方便的方法: - (BOOL)containsString:(NSString *)str; - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str;

在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

如果你想检查一个字符串中是否包含另一个子字符串,你也可以这样检查,

var name = String()  
name = "John has two apples." 

现在,在这个特定的字符串中,如果你想知道它是否包含名为apple的水果,你可以这样做,

if name.contains("apple") {  
  print("Yes , it contains fruit name")    
} else {    
  print("it does not contain any fruit name")    
}    

希望这对你有用。

有了swift 4的新语法,你就可以

字符串。包含(“Swift 4是最好的”)

String是你的字符串变量

这是我在快速操场上的第一次尝试。 我通过提供两个新函数(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

我欢迎任何反馈:)