将字符串分隔成n个字符

将字符串分成两个字符串的惯用方法是什么?

例子:

"" -> [""] "ab" -> ["ab"] "abcd" -> ["ab", "cd"] 

我们可以假定字符串的长度是2的倍数。

我可以使用像这个Java的答案正则expression式,但我希望find一个更好的方法(即使用kotlin的其他方法之一)。

一旦Kotlin 1.2发布,您可以使用KEEP-11提议中添加到kotlin-stdlibchunked函数。 例:

 val chunked = myString.chunked(2) 

您已经可以使用Kotlin 1.2 M2预发布来试用。


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

 fun String.chunked(size: Int): List { val nChunks = length / size return (0 until nChunks).map { substring(it * size, (it + 1) * size) } } 

 println("abcdef".chunked(2)) // [ab, cd, ef] 

这个实现会删除小于size元素的余数。 您可以修改它,并将结果添加到结果中。

使用generateSequence chunked的function版本:

 fun String.split(n: Int) = Pair(this.drop(n), this.take(n)) fun String.chunked(n: Int): Sequence = generateSequence(this.split(n), { when { it.first.isEmpty() -> null else -> it.first.split(n) } }) .map(Pair<*, String>::second) 

输出

 "".chunked(2) => [] "ab".chunked(2) => [ab] "abcd".chunked(2) => [ab, cd] "abc".chunked(2) => [ab, c]