Swift:
Excluindo caracteres que correspondem a um padrão
Como Fazer:
Para deletar caracteres indesejados em Swift, podemos usar String
e CharacterSet
. Veja como:
var texto = "Olá, Mundo! 123."
let caracteresParaRemover = CharacterSet(charactersIn: "123.")
texto.unicodeScalars.removeAll(where: { caracteresParaRemover.contains($0) })
// Saída: "Olá, Mundo! "
Outro exemplo, removendo todas as vogais de uma frase:
var frase = "Remover todas as vogais"
let vogais = CharacterSet(charactersIn: "aeiouAEIOU")
frase.unicodeScalars.removeAll(where: { vogais.contains($0) })
// Saída: "Rmvr tds s vgs"
Mergulho Profundo
No passado, muitos usavam expressões regulares (regex) para essa tarefa – e ainda é uma opção viável. Em Swift, o CharacterSet
e métodos de extensão de String
facilitam o trabalho, principalmente para padrões simples.
Para padrões mais complexos ou dinâmicos, regex ainda é o rei. Contudo, regex pode ser pesado e difícil de ler/manutenizar. O ideal é balancear simplicidade e desempenho, escolhendo a ferramenta certa para o problema certo.
Implementar o removeAll(where:)
é eficiente porque itera pela coleção de unicodeScalars
da string apenas uma vez, e Swift otimiza o uso de strings internamente com uma representação eficiente na maioria dos casos.
Veja Também
- Documentação oficial do
CharacterSet
em Swift: CharacterSet - Guia rápido para Expressões Regulares em Swift: NSRegularExpression