Menu
Coddy logo textTech

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"))    // vrai

contains 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")
}
challenge icon

Défi

Facile

Lisez une seule ligne d'entrée. Validez-la comme un simple email en vérifiant tous ces points :

  • Il contient exactement un @ (utilisez filter + count sur 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 fin

Les 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]
quiz iconTestez-vous

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