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

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

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


当前回答

在这里的所有答案中,我认为它们要么不工作,要么有点hack(转换回NSString)。这个问题的正确答案很可能随着不同的beta版本而改变。

以下是我使用的方法:

let string: String = "hello Swift"
if string.rangeOfString("Swift") != nil
{
    println("exists")
}

”!= nil”成为Beta 5的要求。

其他回答

在iOS 8和更新版本中,你可以使用这两个NSString方法:

@availability(iOS, introduced=8.0)
func containsString(aString: String) -> Bool

@availability(iOS, introduced=8.0)
func localizedCaseInsensitiveContainsString(aString: String) -> Bool

字符串。containsString只在10.10 Yosemite(可能还有iOS8)中可用。 而且在10.9中将它连接到objecvec也会崩溃。你试图传递一个NSString到NSCFString。我不知道区别,但我可以说10.9在OS X 10.9应用程序中执行这段代码时呕吐。

以下是Swift与10.9和10.10的不同之处: https://developer.apple.com/library/prerelease/mac/documentation/General/Reference/APIDiffsMacOSX10_10SeedDiff/index.html containsString仅在10.10中可用

上面的String范围在10.9上工作得很好。我发现在10.9上开发Xcode beta2非常稳定。我不使用游乐场的命令行版本。我发现如果导入了合适的框架,自动补全功能是非常有用的。

>在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

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

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")    
}    

希望这对你有用。

检查它是否包含“Hello”

let s = "Hello World"

if s.rangeOfString("Hello") != nil {
    print("Yes it contains 'Hello'")
}