聲明:檢查不區分大小寫
let listArray = ["kashif"]
let word = "kashif"
那麼這
contains(listArray, word)
返回真實的,但如果聲明:
let word = "Kashif"
則返回false,因爲比較是區分大小寫的。
如何使此比較不區分大小寫?
聲明:檢查不區分大小寫
let listArray = ["kashif"]
let word = "kashif"
那麼這
contains(listArray, word)
返回真實的,但如果聲明:
let word = "Kashif"
則返回false,因爲比較是區分大小寫的。
如何使此比較不區分大小寫?
可以使用
word.lowercaseString
將字符串轉換爲全部小寫字符
試試這個:
let loword = word.lowercaseString
let found = contains(listArray) { $0.lowercaseString == loword }
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
}
我的例子
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()
}
爲了檢查如果一個陣列中存在的字符串(情況不靈敏),請使用
listArray.localizedCaseInsensitiveContainsString(word)
其中listArray是數組的名稱 和字是您所查找的文字
這個代碼在雨燕2.2
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已在陣列中的對象的索引,這樣你就可以抓取對象,做任何你請:)
更好這應該是公認的答案!包含()的應該是equals(),這裏是 –
謝謝大家的好解答。我不得不做的另一個步驟是去我的源文本文件,並將其中的所有內容也轉換爲小寫。 – Kashif