Como dividir uma string em um array em Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que dividir uma string é o básico que todo desenvolvedor Swift deve saber

\n\n

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

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

\n\n

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

\n\n

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

\n\n
import Foundation\n\nlet text = "maçã,banana,laranja,kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["maçã", "banana", "laranja", "kiwi"]
\n\n

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

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

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

\n\n

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

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

Parâmetros do método split:

\n
    \n
  • separator — caractere separador (Character).
  • \n
  • maxSplits — número máximo de divisões (padrão Int.max).
  • \n
  • omittingEmptySubsequences — se deve remover substrings vazias (padrão 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

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

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

Blogs

Book Recommendations