2015-07-09 112 views
16

聲明:檢查不區分大小寫

let listArray = ["kashif"] 
let word = "kashif" 

那麼這

contains(listArray, word) 

返回真實的,但如果聲明:

let word = "Kashif" 

則返回false,因爲比較是區分大小寫的。

如何使此比較不區分大小寫?

+0

謝謝大家的好解答。我不得不做的另一個步驟是去我的源文本文件,並將其中的所有內容也轉換爲小寫。 – Kashif

回答

14

可以使用

word.lowercaseString 

將字符串轉換爲全部小寫字符

6

試試這個:

let loword = word.lowercaseString 
let found = contains(listArray) { $0.lowercaseString == loword } 
24
let listArray = ["kashif"] 
let word = "Kashif" 

if contains(listArray, {$0.caseInsensitiveCompare(word) == NSComparisonResult.OrderedSame}) { 
    println(true) // true 
} 

的Xcode 7.3.1•斯威夫特2.2.1

if listArray.contains({$0.caseInsensitiveCompare(word) == .OrderedSame}) { 
    print(true) // true 
} 

的Xcode 8•夫特3或更高

if listArray.contains(where: {$0.caseInsensitiveCompare(word) == .orderedSame}) { 
    print(true) // true 
} 
0

我的例子

func updateSearchResultsForSearchController(searchController: UISearchController) { 
    guard let searchText = searchController.searchBar.text else { return } 
    let countries = Countries.getAllCountries() 
    filteredCountries = countries.filter() { 
     return $0.name.containsString(searchText) || $0.name.lowercaseString.containsString(searchText) 
    } 
    self.tableView.reloadData() 
} 
4

爲了檢查如果一個陣列中存在的字符串(情況不靈敏),請使用

listArray.localizedCaseInsensitiveContainsString(word) 

其中listArray是數組的名稱 和字是您所查找的文字

這個代碼在雨燕2.2

+1

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone

+0

http://stackoverflow.com/a/26175437/419348 'localizedCaseInsensitiveContainsString'似乎是'NSString'中的一個方法。但我不喜歡它是方法簽名。也許'containsIgnoringCase'是更好的命名。 – AechoLiu

1

SWIFT 3.0:

找到一個字符串數組一個區分大小寫字符串是冷靜和所有,但如果你沒有一個索引它在某些情況下不會很酷。

這裏是我的解決方案:

let stringArray = ["FOO", "bar"]() 
if let index = stringArray.index(where: {$0.caseInsensitiveCompare("foo") == .orderedSame}) { 
    print("STRING \(stringArray[index]) FOUND AT INDEX \(index)") 
    //prints "STRING FOO FOUND AT INDEX 0"            
} 

這比其他的答案B/C已在陣列中的對象的索引,這樣你就可以抓取對象,做任何你請:)

更好
+1

這應該是公認的答案!包含()的應該是equals(),這裏是 –

-1

斯威夫特4

只是讓一切(查詢和結果)不區分大小寫。

for item in listArray { 
    if item.lowercased().contains(word.lowercased()) { 
     searchResults.append(item) 
    } 
} 
+0

。 – eriksoe

+0

只取決於您希望搜索如何工作。對於搜索查詢,我更喜歡包含。 – sconewolf