Recherche dans les chaînes
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 3 sur 56.
Trois vérifications rapides pour savoir si une sous-chaîne se trouve à l'intérieur d'une autre :
let email = "alice@coddy.tech"
print(email.contains("@")) // vrai
print(email.hasPrefix("alice")) // vrai
print(email.hasSuffix(".tech")) // vraicontains prend n'importe quelle sous-chaîne, tandis que hasPrefix et hasSuffix ne regardent que le début ou la fin. Ils sont tous sensibles à la casse, donc mettez la chaîne en minuscules d'abord si cela a de l'importance.
Combinez-les avec ! pour un test rapide d'absence :
if !email.contains("@") {
print("not a valid email")
}Défi
FacileLisez une seule ligne d'entrée. Validez-la comme un simple email en vérifiant tous ces points :
- Il contient exactement un
@(utilisezfilter+countsur les caractères) - Il ne commence pas et ne se termine pas par
@ - Il se termine par
.tech,.com, ou.org(insensible à la casse)
Affichez valid lorsque chaque vérification réussit, sinon affichez invalid. Comparez par rapport à la version en minuscules de l'entrée.
Pour l'entrée alice@CODDY.TECH, la sortie est valid.
Aide-mémoire
Vérifiez si une chaîne contient une sous-chaîne, ou si elle commence/se termine par une :
let email = "alice@coddy.tech"
email.contains("@") // true – n'importe où dans la chaîne
email.hasPrefix("alice") // true – au début
email.hasSuffix(".tech") // true – à la finLes trois sont sensibles à la casse. Utilisez d'abord .lowercased() si nécessaire :
email.lowercased().hasSuffix(".tech")Utilisez ! pour tester l'absence :
if !email.contains("@") { print("not a valid email") }Essayez vous-même
let line = readLine()!
// TODO: valider exactement un '@', pas aux extrémités, suffixe parmi [.tech .com .org]
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots