Слить две строки в котлин - PullRequest
       1

Слить две строки в котлин

0 голосов
/ 05 февраля 2019

У меня есть две строки

val a = "abc"
val b = "xyz"

Я хочу объединить его и мне нужен вывод, как показано ниже

axbycz

Я добавил обе строки в arraylist, а затем отобразил их на плоскости

val c = listOf(a, b)

val d = c.flatMap {
    it.toList()
}

, но не получил желаемый результат

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Вы всегда можете использовать простой цикл, предполагая, что обе строки имеют одинаковый размер.Таким образом, вы только выделяете StringBuilder и переменную счетчика, без каких-либо lists, arrays или pairs:

val a = "abc"
val b = "xyz"
val sb = StringBuilder()
for(i in 0 until a.length){
    sb.append(a[i]).append(b[i])
}
val d = sb.toString()
0 голосов
/ 06 февраля 2019

marstran ответ очень лаконичен, а Pawels очень быстр.Используя buildString, вы можете получить лучшее из обоих миров:

buildString {
    a.zip(b).forEach { (a, b) ->
        append(a).append(b)
    }
}

buildString создает StringBuilder и предлагает его в качестве приемника в лямбде.Он возвращает построенную строку.

Попробуйте это здесь: Детская площадка Котлина .Спасибо Павлу за создание оригинального теста.

0 голосов
/ 05 февраля 2019

Используйте функцию zip.Создает список пар с «соседними» буквами.Затем вы можете использовать joinToString с преобразователем для создания вашего окончательного результата.

a.zip(b) // Returns the list [(a, x), (b, y), (c, z)]
 .joinToString("") { (a, b) -> "$a$b" } // Joins the list back to a string with no separator
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...