Substituindo Substrings
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 5 de 56.
replacingOccurrences(of:with:) retorna uma nova string com cada correspondência de uma substring substituída por outra:
let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits) // "5551234567"Assim como os métodos de capitalização, ele retorna uma nova String; a original permanece inalterada. Encadeie chamadas quando precisar remover vários padrões:
let messy = " 555-123 4567 "
let clean = messy
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")
print(clean) // "5551234567"Duas substituições significam duas passagens pela string. Para código sensível ao desempenho em strings gigantes, prefira uma única passagem de filter pelos caracteres; para o trabalho diário, substituições encadeadas são adequadas e de leitura clara.
Desafio
InicianteLeia uma única linha de entrada. Trate-a como uma frase e produza um slug adequado para uma URL ao:
- Converter a entrada para letras minúsculas
- Substituir cada espaço por um
- - Remover todos os caracteres
!,?e.
Imprima o slug resultante.
Para a entrada Hello World!, a saída é hello-world. Para Is Swift Fun?, a saída é is-swift-fun.
Folha de consulta
replacingOccurrences(of:with:) retorna uma nova string com todas as correspondências substituídas:
let digits = "555-123-4567".replacingOccurrences(of: "-", with: "")
// "5551234567"Encadeie chamadas para lidar com múltiplos padrões:
let clean = "555-123 4567"
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")Experimente você mesmo
let line = readLine()!
// TODO: converter para minúsculas, substituir espaços por hifens, remover os caracteres ! ? .
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras