問題

Objective-C中檢查NSString中子字串的程式碼是:

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

但是如何在Swift中執行此操作?

  最佳答案

您可以使用Swift完全相同的呼叫:

Swift 4& Swift 5

在Swift 4 String中是一個Character值的集合,它在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")
}
 

舊Swift

 var string = "hello Swift"

if string.rangeOfString("Swift") != nil{ 
    println("exists")
}

// alternative: not case sensitive
if string.lowercaseString.rangeOfString("swift") != nil {
    println("exists")
}
 

我希望這是一個有用的解決方案,因為包括我在內的一些人透過呼叫containsString()遇到了一些奇怪的問題.

PS.不要忘記import Foundation

腳註

  1. 只要記住在 Strings 上使用集合函式有一些 邊緣情況 可以給出意想不到的結果,例如在處理 emojis 或像重音字母這樣的其他圖形素叢集時。

  相同標籤的其他問題

swiftstringnsstringsubstring