Introdução: Por que dividir uma string é o básico que todo desenvolvedor Swift deve saber
\n\nImagine a situação: você está analisando um arquivo CSV, processando a entrada do usuário de um campo de texto ou analisando uma string semelhante a JSON. O que você faz? Isso mesmo — divide a string em um array. A pergunta "Split a String into an array in Swift?" no Stack Overflow teve mais de 20.000 visualizações e se tornou uma das mais populares entre desenvolvedores iOS iniciantes. Por quê? Porque sem essa habilidade é impossível escrever qualquer projeto sério em Swift.
\n\nNeste artigo, abordaremos todas as maneiras possíveis de dividir uma string em um array em Swift: desde o clássico components(separatedBy:) até o moderno split(separator:) e truques com expressões regulares. Você aprenderá qual método escolher dependendo da tarefa e obterá exemplos de código prontos que podem ser inseridos diretamente no seu projeto Xcode.
1. Método clássico: components(separatedBy:)
\n\nEste método veio do Objective-C e ainda é amplamente utilizado. É simples, claro e funciona como um relógio suíço. components(separatedBy:) retorna um array de strings [String], divididas pelo separador especificado.
import Foundation\n\nlet text = "maçã,banana,laranja,kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["maçã", "banana", "laranja", "kiwi"]\n\nNuances importantes do método components(separatedBy:):
\n- \n
- Separador é uma string. Você pode passar qualquer
String, mesmo com vários caracteres:"::"," - ". \n - Elementos vazios são preservados. Se não houver nada entre os separadores, uma string vazia aparecerá no array. \n
- Requer import Foundation. Sem a importação, o método não está disponível. \n
let data = "a,,b,c"\nlet parts = data.components(separatedBy: ",")\nprint(parts) // ["a", "", "b", "c"]\n\nEste método é ideal quando você precisa dividir uma string em um array em Swift de forma simples e rápida sem complicações. Mas lembre-se: ele não remove substrings vazias automaticamente.
\n\n2. Método moderno: split(separator:maxSplits:omittingEmptySubsequences:)
\n\nA partir do Swift 2.0, temos o método nativo split(). Ele é mais flexível e "swift-like". Ao contrário do components, o split retorna um array de Substring, não de String. Isso é feito para otimizar o desempenho — as substrings referenciam a memória da string original.
let sentence = "A rápida raposa marrom pula sobre o cão preguiçoso"\nlet words = sentence.split(separator: " ")\nprint(words) // ["A", "rápida", "raposa", "marrom", "pula", "sobre", "o", "cão", "preguiçoso"]\n\nParâmetros do método split:
\n- \n
separator— caractere separador (Character). \n maxSplits— número máximo de divisões (padrãoInt.max). \n omittingEmptySubsequences— se deve remover substrings vazias (padrãotrue). \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\nSe você precisa dividir uma string em um array de Substring em Swift e deseja controlar elementos vazios — escolha split. E para obter [String], basta adicionar .map(String.init).
let result: [String] = "a,b,c".split(separator: ",").map(String.init)\nprint(result) // ["a", "b", "c"]\n\n