Introduction : Pourquoi la division de chaîne est une base que tout développeur Swift doit connaître
\n\nImaginez la situation : vous analysez un fichier CSV, traitez une saisie utilisateur depuis un champ de texte ou décomposez une chaîne de type JSON. Que faites-vous ? Exactement — vous divisez la chaîne en tableau. La question "Split a String into an array in Swift?" sur Stack Overflow a accumulé plus de 20 000 vues et est devenue l'une des plus populaires parmi les développeurs iOS débutants. Pourquoi ? Parce que sans cette compétence, il est impossible d'écrire un projet sérieux en Swift.
\n\nDans cet article, nous allons passer en revue toutes les façons possibles de diviser une chaîne en tableau en Swift : de la classique components(separatedBy:) à la moderne split(separator:) en passant par des astuces avec les expressions régulières. Vous apprendrez quelle méthode choisir selon la tâche, et obtiendrez des exemples de code prêts à l'emploi que vous pouvez immédiatement insérer dans votre projet Xcode.
1. La méthode classique : components(separatedBy:)
\n\nCette méthode nous vient d'Objective-C et est encore activement utilisée. Elle est simple, compréhensible et fonctionne comme une horloge suisse. components(separatedBy:) retourne un tableau de chaînes [String], séparées par le délimiteur spécifié.
import Foundation\n\nlet text = "pomme,banane,orange,kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["pomme", "banane", "orange", "kiwi"]\n\nPoints importants de la méthode components(separatedBy:):
\n- \n
- Le délimiteur est une chaîne. Vous pouvez passer n'importe quel
String, même composé de plusieurs caractères :"::"," - ". \n - Les éléments vides sont conservés. S'il n'y a rien entre les délimiteurs, une chaîne vide apparaîtra dans le tableau. \n
- Nécessite import Foundation. Sans l'import, la méthode n'est pas disponible. \n
let data = "a,,b,c"\nlet parts = data.components(separatedBy: ",")\nprint(parts) // ["a", "", "b", "c"]\n\nCette méthode est idéale lorsque vous avez besoin de diviser simplement et rapidement une chaîne en tableau en Swift sans complications inutiles. Mais rappelez-vous : elle ne supprime pas automatiquement les sous-chaînes vides.
\n\n2. La méthode moderne : split(separator:maxSplits:omittingEmptySubsequences:)
\n\nDepuis Swift 2.0, nous disposons de la méthode native split(). Elle est plus flexible et plus « swifty ». Contrairement à components, split retourne un tableau de Substring, et non de String. Cela a été fait pour optimiser les performances — les sous-chaînes référencent la mémoire de la chaîne d'origine.
let sentence = "Le rapide renard brun saute par-dessus le chien paresseux"\nlet words = sentence.split(separator: " ")\nprint(words) // ["Le", "rapide", "renard", "brun", "saute", "par-dessus", "le", "chien", "paresseux"]\n\nParamètres de la méthode split :
\n- \n
separator— le caractère séparateur (Character). \n maxSplits— le nombre maximum de divisions (par défautInt.max). \n omittingEmptySubsequences— faut-il supprimer les sous-chaînes vides (par défauttrue). \n
let csvLine = "1,2,,4,5"\nlet withEmpties = csvLine.split(separator: ",", omittingEmptySubsequences: false)\nprint(withEmpties) // ["1", "2", "", "4", "5"]\n\nlet withoutEmpties = csvLine.split(separator: ",", omittingEmptySubsequences: true)\nprint(withoutEmpties) // ["1", "2", "4", "5"]\n\nSi vous avez besoin de diviser une chaîne en tableau de Substring en Swift et que vous souhaitez contrôler les éléments vides — choisissez split. Et pour obtenir un [String], ajoutez simplement .map(String.init).
let result: [String] = "a,b,c".split(separator: ",").map(String.init)\nprint(result) // ["a", "b", "c"]\n\n