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. Количество words после разделения по ,
  2. words, объединённые обратно с помощью > (пробел, знак «больше», пробел), в верхнем регистре
  3. Самое длинное word из списка (после разделения). Если два words имеют одинаковую длину, используйте то, которое встречается first.

Для ввода red,green,blue результатом будет:

3
RED > GREEN > BLUE
green

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

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

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

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

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

Потренируйтесь самостоятельно: Песочница Swift