Cómo dividir una cadena en un array en Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué dividir una cadena es una base que todo desarrollador Swift debe conocer

\n\n

Imagine la situación: está parseando un archivo CSV, procesando la entrada del usuario desde un campo de texto o analizando una cadena similar a JSON. ¿Qué hace? Correcto — divide la cadena en un array. La pregunta "Split a String into an array in Swift?" en Stack Overflow ha acumulado más de 20,000 visitas y se ha convertido en una de las más populares entre los desarrolladores iOS principiantes. ¿Por qué? Porque sin esta habilidad es imposible escribir ningún proyecto serio en Swift.

\n\n

En este artículo analizaremos todas las formas posibles de dividir una cadena en un array en Swift: desde el clásico components(separatedBy:) hasta el moderno split(separator:) y trucos ingeniosos con expresiones regulares. Aprenderá qué método elegir según la tarea y obtendrá ejemplos de código listos para usar que puede insertar directamente en su proyecto de Xcode.

\n\n

1. Método clásico: components(separatedBy:)

\n\n

Este método proviene de Objective-C y todavía se usa activamente. Es simple, claro y funciona como un reloj suizo. components(separatedBy:) devuelve un array de cadenas [String], separadas por el delimitador especificado.

\n\n
import Foundation\n\nlet text = "manzana,plátano,naranja,kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["manzana", "plátano", "naranja", "kiwi"]
\n\n

Matices importantes del método components(separatedBy:):

\n
    \n
  • El delimitador es una cadena. Se puede pasar cualquier String, incluso de varios caracteres: "::", " - ".
  • \n
  • Los elementos vacíos se conservan. Si no hay nada entre los delimitadores, aparecerá una cadena vacía en el array.
  • \n
  • Requiere import Foundation. Sin la importación, el método no está disponible.
  • \n
\n\n
let data = "a,,b,c"\nlet parts = data.components(separatedBy: ",")\nprint(parts) // ["a", "", "b", "c"]
\n\n

Este método es ideal cuando necesita dividir una cadena en un array en Swift de forma simple y rápida sin complicaciones innecesarias. Pero recuerde: no elimina las subcadenas vacías automáticamente.

\n\n

2. Método moderno: split(separator:maxSplits:omittingEmptySubsequences:)

\n\n

A partir de Swift 2.0, tenemos el método nativo split(). Es más flexible y "swifteado". A diferencia de components, split devuelve un array de Substring, no de String. Esto se hizo para optimizar el rendimiento: las subcadenas hacen referencia a la memoria de la cadena original.

\n\n
let sentence = "El rápido zorro marrón salta sobre el perro perezoso"\nlet words = sentence.split(separator: " ")\nprint(words) // ["El", "rápido", "zorro", "marrón", "salta", "sobre", "el", "perro", "perezoso"]
\n\n

Parámetros del método split:

\n
    \n
  • separator — carácter delimitador (Character).
  • \n
  • maxSplits — número máximo de divisiones (por defecto Int.max).
  • \n
  • omittingEmptySubsequences — si se deben eliminar las subcadenas vacías (por defecto 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 necesita dividir una cadena en un array de Substring en Swift y desea controlar los elementos vacíos, elija split. Y para obtener [String], simplemente agregue .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