Comment vérifier si l'un des mots d'une chaîne existe dans un tableau?
Par exemple: P>
let arr = ["This", "is", "Array", "of", "String"] let str = "The word String is exists"
5 Réponses :
let arr = ["This", "is", "Array", "of", "String"]
let str = "The word String is exists"
let set1 = Set(str.components(separatedBy: .whitespaces).filter { !$0.isEmpty })
let set2 = Set(arr)
let result = set1.intersection(set2)
print(result)
N'oubliez pas que cela ne fonctionnera pas si la chaîne contient une ponctuation autre que des espaces.
Vous soutenez maintenant d'autres espaces en dehors d'un espace simple, mais cela ne traite aucune autre ponctuation.
Vous pouvez essayer
Je voudrais simplement promouvoir Ar code> à un définir code> si cela devient assez grand, pour éviter la complexité du temps quadratique.
N'oubliez pas que cela ne fonctionnera pas si la chaîne contient une ponctuation autre que des espaces.
@Alexander Oui mais depuis que c'est déjà suggéré de répéter
@RMADDY Nous pouvons travailler sur les valeurs actuelles, OP devrait faire attention dans de tels cas.
essayer suivi:
var resArray = [String]()
let wordArr = str.components(separatedBy: " ")
for s in wordArr {
if arr.contains(s) {
resArray.append(s)
}
}
1) Vous pouvez simplifier ce code dans juste un simple fichier code> instruction code>, 2) Vous devez utiliser un définir code> pour restarray code> (qu'est-ce que "RES TABRAY "Même signifie)? 3) Ne récompensez pas les questions qui ne montrent aucun effort. Pour tout ce que vous savez, vous venez de faire les devoirs de ce type sans l'avoir appris du tout
N'oubliez pas que cela ne fonctionnera pas si la chaîne contient une ponctuation autre que des espaces.
Voici une solution moins naïve qui fonctionnera pour les chaînes contenant une ponctuation.
Ceci divise d'abord la chaîne en mots en utilisant des règles localisées. Il trouve ensuite l'intersection des deux matrices de mots. P> sortie: p> ["string", "est"] A partir de cette écriture, aucune des autres solutions ne fonctionnera pour le deuxième exemple. P> P>
["Il", "aujourd'hui"] p>
blockQuote>
Vous pouvez obtenir le résultat directement avec une intersection définie:
Qu'est-ce que tu as essayé jusque-là?