Функция zip
Функция zip объединяет две строки в список пар Pair,
где каждый символ первой строки сопоставляется с соответствующим
символом второй строки. Результатом является список пар,
где первый элемент пары - символ из первой строки,
а второй элемент - символ из второй строки.
Синтаксис
fun String.zip(other: CharSequence): List<Pair<Char, Char>>
fun <R> String.zip(
other: CharSequence,
transform: (a: Char, b: Char) -> R
): List<R>
Пример
Объединим две строки "abc" и "123"
в список пар:
val str1 = "abc"
val str2 = "123"
val res = str1.zip(str2)
println(res)
Результат выполнения кода:
List<Pair<Char, Char>> [('a', '1'), ('b', '2'), ('c', '3')]
Пример
Если строки имеют разную длину, результат будет содержать столько пар, сколько символов в более короткой строке:
val str1 = "abcd"
val str2 = "12"
val res = str1.zip(str2)
println(res)
Результат выполнения кода:
List<Pair<Char, Char>> [('a', '1'), ('b', '2')]
Пример
Использование функции с преобразованием. Объединим символы двух строк в одну строку:
val str1 = "abc"
val str2 = "123"
val res = str1.zip(str2) { a, b -> "$a$b" }
println(res)
Результат выполнения кода:
List<String> ['a1', 'b2', 'c3']
Пример
Создадим список чисел, где каждое число является суммой кодов символов из двух строк:
val str1 = "abc"
val str2 = "123"
val res = str1.zip(str2) { a, b -> a.code + b.code }
println(res)
Результат выполнения кода:
List<Int> [146, 148, 150]
Смотрите также
-
функцию
chunked,
которая разбивает строку на части заданного размера -
функцию
windowed,
которая создает скользящее окно над строкой -
функцию
plus,
которая объединяет строки путем конкатенации -
функцию
joinToString,
которая объединяет элементы коллекции в строку