first array swift contains

array - swift dictionary contains key



Compruebe si una cadena existe en un caso de matriz insensiblemente (7)

Declaración:

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

luego esto

contains(listArray, word)

Devuelve true pero si la declaración es:

let word = "Kashif"

luego devuelve falso porque la comparación es sensible a mayúsculas

¿Cómo hacer que esta comparación sea insensible?


Mi ejemplo

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


Para verificar si existe una cadena en una matriz (sin distinción entre mayúsculas y minúsculas), utilice

listArray.localizedCaseInsensitiveContainsString(word)

donde listArray es el nombre de matriz y palabra es su texto buscado

Este código funciona en Swift 2.2


Prueba esto:

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


SWIFT 3.0:

Encontrar una cadena que no distinga mayúsculas y minúsculas en una matriz de cadenas es genial y todo, pero si no tiene un índice, no puede ser bueno para ciertas situaciones.

Aquí está mi solución:

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

Esto es mejor que las otras respuestas b / c, tiene un índice del objeto en la matriz, por lo que puede agarrar el objeto y hacer lo que quiera :)


puedes usar

word.lowercaseString

para convertir la cadena a todos los caracteres en minúscula


Swift 4

Simplemente haga que todo (consultas y resultados) sea insensible.

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


let list = ["kashif"] let word = "Kashif" if contains(list, {$0.caseInsensitiveCompare(word) == NSComparisonResult.OrderedSame}) { println(true) // true }

Xcode 7.3.1 • Swift 2.2.1

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

Xcode 8 • Swift 3 o posterior

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

alternativamente:

if list.contains(where: {$0.compare(word, options: .caseInsensitive) == .orderedSame}) { print(true) // true }