Itérer sur les chaînes P2
Fait partie de la section Fondamentaux du Journey Swift de Coddy — leçon 72 sur 86.
Tout comme nous avons utilisé enumerated() avec des tableaux pour obtenir à la fois l'index et l'élément, nous pouvons faire de même avec les chaînes de caractères. C'est utile lorsque vous avez besoin de connaître la position de chaque caractère lors de l'itération.
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tCette technique est utile lors de la construction de nouvelles chaînes de caractères basées sur les positions des caractères. Par exemple, vous pourriez vouloir ne conserver que les caractères aux indices pairs :
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceNotez que nous convertissons char en un String en utilisant String(char) avant de l'ajouter. Ceci est nécessaire car result est un String, et vous ne pouvez pas ajouter directement un Character à celui-ci en utilisant l'opérateur +=.
Défi
FacileÉcrivez une fonction extractOddIndexChars qui prend text et renvoie une nouvelle chaîne contenant uniquement les caractères aux indices impairs.
Utilisez enumerated() pour parcourir la chaîne et construire un résultat contenant les caractères dont l'indice est impair (1, 3, 5, etc.).
Paramètres :
text(String) : La chaîne d'entrée à traiter
Retourne : Une chaîne contenant uniquement les caractères aux indices impairs (String)
Exemple : Si text est "abcdefg", la fonction doit retourner "bdf" (caractères aux indices 1, 3 et 5).
Aide-mémoire
Utilisez enumerated() avec des chaînes de caractères pour obtenir à la fois l'index et le caractère lors de l'itération :
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tLors de la construction de chaînes basées sur les positions des caractères, convertissez Character en String avant l'ajout :
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceUtilisez String(char) pour convertir un Character en String lors de l'ajout avec +=.
Essayez vous-même
func extractOddIndexChars(text: String) -> String {
// Écrivez le code ici
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur ModuloAffectation composéeRécapitulatif - Mathématiques simplesOpérateurs de comparaison7Entrées/Sorties de base
Fonction PrintInterpolation de chaînesSaisie ReadLineConversion de typesRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux10Fonctions
Déclarer une fonctionParamètres et argumentsValeurs de retourÉtiquettes d'argumentRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs par défaut13Itération sur les séquences
Itérer sur les élémentsLa méthode d'énumérationItérer sur les chaînes P1Itérer sur les chaînes P22Variables
Let vs VarAnnotations de typeNombresStringsBooléensConventions de nommageRécapitulatif - Initialiser des variables5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateur ternaire8Calculateur de partage de facture
Message de bienvenueSaisie des données11FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz3Les Optionnels
Comprendre les optionnelsDéballage avec If LetL'instruction Guard LetOpérateur de fusion nilRécapitulatif - Déballage sécurisé6Prise de décision
L'instruction IfIf - ElseRécapitulatif - Calculatrice simpleL'instruction SwitchSwitch avec des intervalles9Boucles
Boucle For-InBoucle WhileBoucle Repeat-WhileBreakContinueRécapitulatif - FactorielleIntervalles dans les bouclesBoucles imbriquéesRécapitulatif - Entrée dynamique