Menu
Coddy logo textTech

Разделение и объединение

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 4 из 56.

Два повседневных инструмента для работы с текстом с разделителями. Оба они входят в состав Foundation, которая уже импортирована.

components(separatedBy:) разбивает строку на массив String по любому переданному разделителю:

let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts)                       // ["red", "green", "blue"]

Обратной операцией является joined(separator:) для любого [String]:

let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line)                        // "swift is fun"

Вы часто будете комбинировать их: разделять, преобразовывать с помощью map, объединять обратно. Результат map для [String] — это по-прежнему [String], поэтому joined работает напрямую.

challenge icon

Задание

Легко

Прочитайте одну строку ввода: список слов, разделенных запятыми.

Выведите три строки:

  1. Количество слов после разделения по символу ,
  2. Слова, объединенные снова с помощью > (пробел, знак "больше", пробел), в верхнем регистре
  3. Самое длинное слово из списка (после разделения). Если два слова имеют одинаковую длину, используйте то, которое встречается первым.

Для входных данных red,green,blue выводом будет:

3
RED > GREEN > BLUE
green

Шпаргалка

Разделите строку на массив с помощью components(separatedBy:):

let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]

Объедините массив строк с помощью joined(separator:):

let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"

Распространенный паттерн — разделение, преобразование с помощью map, объединение:

let result = "red,green,blue"
    .components(separatedBy: ",")
    .map { $0.uppercased() }
    .joined(separator: " > ")
// "RED > GREEN > BLUE"

Попробуйте сами

let line = readLine()!
let words = line.components(separatedBy: ",")

// TODO: вывести count, объединенные в верхнем регистре через " > ", первое самое длинное слово
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком