Comment diviser une chaîne en tableau en Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi la division de chaîne est une base que tout développeur Swift doit connaître

\n\n

Imaginez 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\n

Dans 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.

\n\n

1. La méthode classique : components(separatedBy:)

\n\n

Cette 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é.

\n\n
import Foundation\n\nlet text = "pomme,banane,orange,kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["pomme", "banane", "orange", "kiwi"]
\n\n

Points 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
\n\n
let data = "a,,b,c"\nlet parts = data.components(separatedBy: ",")\nprint(parts) // ["a", "", "b", "c"]
\n\n

Cette 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\n

2. La méthode moderne : split(separator:maxSplits:omittingEmptySubsequences:)

\n\n

Depuis 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.

\n\n
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\n

Paramètres de la méthode split :

\n
    \n
  • separator — le caractère séparateur (Character).
  • \n
  • maxSplits — le nombre maximum de divisions (par défaut Int.max).
  • \n
  • omittingEmptySubsequences — faut-il supprimer les sous-chaînes vides (par défaut true).
  • \n
\n\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\n

Si 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).

\n\n
let result: [String] = "a,b,c".split(separator: ",").map(String.init)\nprint(result) // ["a", "b", "c"]
\n\n

Blogs

Book Recommendations