在Kotlin中合并两个字符串

时间:2019-02-05 11:51:45

标签: string arraylist kotlin

我有两个字符串

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

我要合并它,并需要如下输出

  

axbycz

我将两个字符串都添加到arraylist中,然后对其进行平面映射

val c = listOf(a, b)

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

但没有得到想要的结果

3 个答案:

答案 0 :(得分:10)

使用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

答案 1 :(得分:3)

您始终可以使用简单的循环,假设两个字符串的大小相同。这样,您只需分配一个StringBuilder和计数器变量,而不分配任何listsarrayspairs

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()

答案 2 :(得分:0)

marstran的答案非常简洁,Pawels的答案非常快。使用buildString,您可以兼得两全:

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

buildString创建一个StringBuilder并将其作为接收器提供给lambda。它返回构建的字符串。

在此处尝试:Kotlin Playground。感谢Pawel创建原始基准。