Remplacement de sous-chaînes
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 5 sur 56.
replacingOccurrences(of:with:) retourne une nouvelle chaîne de caractères où chaque occurrence d'une sous-chaîne est remplacée par une autre :
let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits) // "5551234567"Comme les méthodes de casse, elle renvoie une nouvelle String ; l'originale n'est pas modifiée. Enchaînez les appels lorsque vous devez supprimer plusieurs motifs :
let messy = " 555-123 4567 "
let clean = messy
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")
print(clean) // "5551234567"Deux remplacements signifient deux passages sur la chaîne. Pour du code sensible aux performances sur de grandes chaînes, préférez un seul passage filter sur les caractères ; pour le travail quotidien, les remplacements en chaîne conviennent parfaitement et sont clairs à lire.
Défi
DébutantLisez une seule ligne d'entrée. Traitez-la comme une phrase et produisez un slug adapté à une URL en :
- Mettant l'entrée en minuscules
- Remplaçant chaque espace par un
- - Supprimant chaque caractère
!,?, et.
Affichez le slug résultant.
Pour l'entrée Hello World!, la sortie est hello-world. Pour Is Swift Fun?, la sortie est is-swift-fun.
Aide-mémoire
replacingOccurrences(of:with:) retourne une nouvelle chaîne de caractères avec chaque occurrence remplacée :
let digits = "555-123-4567".replacingOccurrences(of: "-", with: "")
// "5551234567"Enchaînez les appels pour gérer plusieurs motifs :
let clean = "555-123 4567"
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")Essayez vous-même
let line = readLine()!
// TODO: mettre en minuscules, remplacer les espaces par des traits d'union, supprimer les caractères ! ? .
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