Функция zip

Функция zip объединяет две строки в список пар Pair, где каждый символ первой строки сопоставляется с соответствующим символом второй строки. Результатом является список пар, где первый элемент пары - символ из первой строки, а второй элемент - символ из второй строки.

Синтаксис

kotlinfun String.zip(other: CharSequence): List<Pair<Char, Char>>
kotlinfun <R> String.zip(
  other: CharSequence, 
  transform: (a: Char, b: Char) -> R
): List<R>

Пример

Объединим две строки "abc" и "123" в список пар:

kotlinval str1 = "abc"
val str2 = "123"
val res = str1.zip(str2)
println(res)

Результат выполнения кода:

kotlinList<Pair<Char, Char>> [('a', '1'), ('b', '2'), ('c', '3')]

Пример

Если строки имеют разную длину, результат будет содержать столько пар, сколько символов в более короткой строке:

kotlinval str1 = "abcd"
val str2 = "12"
val res = str1.zip(str2)
println(res)

Результат выполнения кода:

kotlinList<Pair<Char, Char>> [('a', '1'), ('b', '2')]

Пример

Использование функции с преобразованием. Объединим символы двух строк в одну строку:

kotlinval str1 = "abc"
val str2 = "123"
val res = str1.zip(str2) { a, b -> "$a$b" }
println(res)

Результат выполнения кода:

kotlinList<String> ['a1', 'b2', 'c3']

Пример

Создадим список чисел, где каждое число является суммой кодов символов из двух строк:

kotlinval str1 = "abc"
val str2 = "123"
val res = str1.zip(str2) { a, b -> a.code + b.code }
println(res)

Результат выполнения кода:

kotlinList<Int> [146, 148, 150]

Смотрите также

  • функцию chunked,
    которая разбивает строку на части заданного размера
  • функцию windowed,
    которая создает скользящее окно над строкой
  • функцию plus,
    которая объединяет строки путем конкатенации
  • функцию joinToString,
    которая объединяет элементы коллекции в строку