web-dev-qa-db-fra.com

recherche de correspondance insensible à la casse dans le tableau de chaînes Swift 3

Dans Swift 3, je veux créer un tableau de chaîne correspondante (insensible à la casse) à partir du tableau de chaîne: -

J'utilise ce code, mais il est sensible à la casse,

let filteredArray = self.arrCountry.filter { $0.contains("india") }

comment puis-je faire cela ... supposons que j'ai un tableau de chaînes maître appelé arrCountry, je veux créer un autre tableau de toutes les chaînes contenant "india" (insensible à la casse).

Quelqu'un peut m'aider.

22
Mayank Jain

Vous pouvez essayer avec localizedCaseInsensitiveContains

let filteredArray = self.arrCountry.filter { $0.localizedCaseInsensitiveContains("india") }
57
Duyen-Hoa

localizedCaseInsensitiveContains
Renvoie une valeur booléenne indiquant si la chaîne donnée n'est pas vide et contenue dans cette chaîne par une recherche non littérale insensible à la casse, en tenant compte des paramètres régionaux actuels. Une opération insensible à la casse indépendante des paramètres régionaux et d'autres besoins peuvent être atteints en appelant range (of: options: range: locale :).

Équivalent à: range (of: other, options: .caseInsensitiveSearch, locale: Locale.current)! = Nil

Il vaut mieux utiliser

.filter { $0.range(of: "india", options: .caseInsensitive) != nil }
10
Nik Kov

Le moyen le plus simple pourrait être de mettre en minuscule vos chaînes et de comparer:

Swift 3 et supérieur

let filteredArray = self.arrCountry.filter { $0.lowercased() == "india" }
0
Jonathan Cabrera