Excluindo caracteres que correspondem a um padrão

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