Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Leia uma única linha de entrada: uma lista de palavras separadas por vírgula.

Imprima três linhas:

  1. O número de palavras após a divisão por ,
  2. As palavras reunidas com > (espaço, sinal de maior que, espaço), em letras maiúsculas
  3. 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
green

Folha 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
quiz iconTeste seus conhecimentos

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