将字符串分隔成n个字符
将字符串分成两个字符串的惯用方法是什么?
例子:
"" -> [""] "ab" -> ["ab"] "abcd" -> ["ab", "cd"]
我们可以假定字符串的长度是2的倍数。
我可以使用像这个Java的答案正则expression式,但我希望find一个更好的方法(即使用kotlin的其他方法之一)。
一旦Kotlin 1.2发布,您可以使用KEEP-11提议中添加到kotlin-stdlib
的chunked
函数。 例:
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]