我试图用16个字符长度的块拆分字符串。 所以首先我创建长度为64的字符串
val data = "Some string"
data = String.format("%-64s", data)
然后我用正则表达式分割
val nameArray = data.split(Regex("(?<=\\G.{16})").toPattern())
在这里我得到了4个带有16个字符的块,但我只有2个,其中第一个是16,第二个是48。
我在哪里错了?
Kotlin 1.2.61,Oracle JDK 1.8.0_181-b13,Windows 10
答案 0 :(得分:0)
这是我用正则表达式分割的方式
.{16}
注意:我不确定其中所有其他内容都在尝试做什么,也许是字符串特定的项目?
答案 1 :(得分:0)
data.chunked(16)
足以解决您所描述的问题。它应该在您使用的版本中可用,因为其文档记录为here。
我尝试了您的方法和Keng中的方法,但结果却大不相同。
import java.net.URI
import java.util.*
import java.time.LocalDateTime
import java.time.temporal.*
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
var data = "Some string"
data = String.format("%-64s", data)
println(data.length)
// 1st approach
var nameArray = data.split(Regex("(?<=\\G.{16})").toPattern())
println(nameArray)
nameArray.forEach{ it -> println(it.length) }
println()
// 2nd approach
nameArray = data.split(Regex(".{16}").toPattern())
println(nameArray)
nameArray.forEach{ it -> println(it.length) }
println()
data.chunked(16).forEach{ it -> println(it.length) }
}
运行该代码时,建议的regex方法返回长度为5的数组,这是由结尾处的空元素引起的。我不太清楚为什么,但是我希望这有助于解决您的问题。