Divisão e Junção
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 4 de 56.
Duas ferramentas do dia a dia para trabalhar com texto delimitado. Ambas vêm do Foundation, que já está importado.
components(separatedBy:) divide uma string em um array de Strings com base em qualquer delimitador que você passar:
let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts) // ["red", "green", "blue"]O inverso é joined(separator:) em qualquer [String]:
let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line) // "swift is fun"Você frequentemente os combinará: dividir, transformar com map, juntar novamente. O resultado de map em um [String] ainda é um [String], portanto joined funciona diretamente.
Desafio
FácilLeia uma única linha de entrada: uma lista de palavras separadas por vírgula.
Imprima três linhas:
- O número de palavras após a divisão por
, - As palavras reunidas com
>(espaço, sinal de maior que, espaço), em letras maiúsculas - A palavra mais longa da lista (após a divisão). Se duas palavras empatarem, use a que aparece primeiro.
Para a entrada red,green,blue, a saída é:
3
RED > GREEN > BLUE
greenFolha de consulta
Divida uma string em um array usando components(separatedBy:):
let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]Junte um array de strings novamente usando joined(separator:):
let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"Padrão comum — dividir, transformar com map, juntar novamente:
let result = "red,green,blue"
.components(separatedBy: ",")
.map { $0.uppercased() }
.joined(separator: " > ")
// "RED > GREEN > BLUE"Experimente você mesmo
let line = readLine()!
let words = line.components(separatedBy: ",")
// TODO: imprimir a contagem, as palavras unidas em maiúsculas com " > ", a primeira palavra mais longa
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