J'ai un tableau contenant un certain nombre de chaînes. J'ai utilisé contains()
(voir ci-dessous) pour vérifier si une certaine chaîne existe dans le tableau, mais j'aimerais vérifier si une partie d'une chaîne se trouve dans le tableau?
itemsArray = ["Google, Goodbye, Go, Hello"]
searchToSearch = "go"
if contains(itemsArray, stringToSearch) {
NSLog("Term Exists")
}
else {
NSLog("Can't find term")
}
Le code ci-dessus vérifie simplement si une valeur est présente dans le tableau dans son intégralité, mais j'aimerais trouver "Google, Google and Go"
Essayez comme ça.
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
let searchToSearch = "go"
let filteredStrings = itemsArray.filter({(item: String) -> Bool in
var stringMatch = item.lowercaseString.rangeOfString(searchToSearch.lowercaseString)
return stringMatch != nil ? true : false
})
filteredStrings
contiendra la liste des chaînes ayant des sous-chaînes correspondantes.
Dans Swift Array
, struct fournit une méthode de filtrage permettant de filtrer un tableau fourni en fonction de critères de filtrage du texte.
Tout d’abord, vous avez défini un tableau avec une seule chaîne . Ce que vous voulez probablement, c’est
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
Ensuite, vous pouvez utiliser contains(array, predicate)
et rangeOfString()
- éventuellement avec .CaseInsensitiveSearch
- pour vérifier chaque chaîne du tableau .__ si elle contient la chaîne de recherche:
let itemExists = contains(itemsArray) {
$0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) != nil
}
println(itemExists) // true
Ou, si vous voulez un tableau avec les éléments correspondants au lieu d'un oui/non Résultat:
let matchingTerms = filter(itemsArray) {
$0.rangeOfString(searchToSearch, options: .CaseInsensitiveSearch) != nil
}
println(matchingTerms) // [Google, Goodbye, Go]
Mise à jour pour Swift 3:
let itemExists = itemsArray.contains(where: {
$0.range(of: searchToSearch, options: .caseInsensitive) != nil
})
print(itemExists)
let matchingTerms = itemsArray.filter({
$0.range(of: searchToSearch, options: .caseInsensitive) != nil
})
print(matchingTerms)
Essayez comme ça.
Swift 3.0
import UIKit
let itemsArray = ["Google", "Goodbye", "Go", "Hello"]
var filterdItemsArray = [String]()
func filterContentForSearchText(searchText: String) {
filterdItemsArray = itemsArray.filter { item in
return item.lowercased().contains(searchText.lowercased())
}
}
filterContentForSearchText(searchText: "Go")
print(filterdItemsArray)
Sortie
["Google", "Goodbye", "Go"]
func filterContentForSearchText(_ searchText: String) {
filteredString = itemsArray.filter({( item : String) -> Bool in
return item.lowercased().contains(searchText.lowercased())
})
}
Si vous vérifiez simplement si un élément existe dans un tableau spécifique, essayez ceci:
var a = [1,2,3,4,5]
if a.contains(4) {
print("Yes, it does contain number 4")
}
else {
print("No, it doesn't")
}