每n个字符拆分字符串

ass*_*ias 10 string split kotlin

将字符串拆分为每个2个字符的字符串的惯用方法是什么?

例子:

"" -> [""]
"ab" -> ["ab"]
"abcd" -> ["ab", "cd"]
Run Code Online (Sandbox Code Playgroud)

我们可以假设字符串的长度是2的倍数.

我可以在这个Java答案中使用正则表达式,但我希望找到更好的方法(即使用kotlin的其他方法之一).

hot*_*key 19

一旦科特林1.2发布,可以使用chunked被添加到功能kotlin-stdlibKEEP-11的建议.例:

val chunked = myString.chunked(2)
Run Code Online (Sandbox Code Playgroud)

你可以用Kotlin 1.2 M2预发布试试这个.


在此之前,您可以使用以下代码实现相同的功能:

fun String.chunked(size: Int): List<String> {
    val nChunks = length / size
    return (0 until nChunks).map { substring(it * size, (it + 1) * size) }
}
Run Code Online (Sandbox Code Playgroud)

println("abcdef".chunked(2)) // [ab, cd, ef]
Run Code Online (Sandbox Code Playgroud)

此实现会丢弃小于size元素的余数.您可以修改它,也可以将余数添加到结果中.