2015-07-09 24 views
16

Beyanı:kontrol bir dize, bir dizi halinde varsa duyarsızca

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

sonra bu

contains(listArray, word) 

İade doğrudur ama beyan ise:

let word = "Kashif" 

o zaman çünkü false döndürür Karşılaştırma büyük/küçük harfe duyarlıdır.

Bu karşılaştırma durumu nasıl yapılır?

let loword = word.lowercaseString 
let found = contains(listArray) { $0.lowercaseString == loword } 
+0

Teşekkür ederim tüm iyi yanıtlar. Yapmam gereken ek bir adım, kaynak metin dosyasına gitmekti ve içindeki her şeyi küçük harfe dönüştürmekti. – Kashif

cevap

14

Eğer

word.lowercaseString 

küçük harfe dize dönüştürmek için kullanabileceğiniz

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

Xcode 8 • Swift 3 veya sonrası

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

bu deneyin

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

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

Xcode 7.3.1 Swift 2.2.1 •:

0

Benim örnek

(duyarsızca durumda) bir dize bir dizide olup olmadığını öğrenmek için
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

, kullanın lütfen

listArray.localizedCaseInsensitiveContainsString(word) 

Burada listArray, dizinin adıdır ve kelime senin arandı

Bu kod

+1

Lütfen daha fazla bilgi ile düzenleyin.Sadece kod ve "bunu dene" yanıtları önerilmez, çünkü bunlar aranabilir içerik içermez ve neden birinin "bunu denemesi" gerektiğini açıklamamaktadır. – abarisone

+0

http://stackoverflow.com/a/26175437/419348 'localizedCaseInsensitiveContainsString', NSString'de bir yöntem gibi görünüyor. Ama bu yöntem imzasını sevmiyorum. Belki ''IgnoringCase' içerir daha iyi adlandırmadır. – AechoLiu

1

SWIFT 3.0 Swift 2.2 çalışır metindir:

bir dize dizideki bir olgu duyarsız dize bulma serin ve tüm, ama bir yoksa endeksi belirli durumlar için serin olamaz. İşte

benim çözümdür:

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

Bu dizideki nesnenin indeksi var, yani c/nesneyi yakalayabilir ve

:) lütfen ne gerekiyorsa b diğer yanıtlardan daha iyidir
+1

Bu kabul edilen cevap olmalı! –

-1

Swift 4

Hemen her şey (sorgu ve sonuçlar) vaka duyarsız olun.

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

içerir() burada eşittir(), burada. – eriksoe

+0

Sadece aramanın nasıl çalışmasını istediğinize bağlı. Arama sorguları için tercih ederim. – sconewolf