gpt4 book ai didi

java - Kotlin split with regex 工作不如预期

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:16 25 4
gpt4 key购买 nike

我正在尝试用 16 个字符长度的 block 拆分字符串。所以首先我创建长度为 64 的字符串

val data = "Some string"
data = String.format("%-64s", data)

然后我用正则表达式拆分它

 val nameArray = data.split(Regex("(?<=\\G.{16})").toPattern())

在这里,我 expext 得到 4 个 16 个字符的 block ,但我只得到 2 个,第一个是 16,第二个是 48。

我哪里错了?

Kotlin 1.2.61、Oracle JDK 1.8.0_181-b13、Windows 10

enter image description here

最佳答案

data.chunked(16)

应该足以解决您描述的问题。它应该在您使用的版本中可用,因为它是这样记录的 here .

我试过你的方法和来自 Keng 的方法,但与此处所述的结果截然不同。

https://pl.kotl.in/HJpQSfdqi

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

当我运行该代码时,建议的正则表达式方法返回长度为 5 的数组,这是由末尾的空元素引起的。我不太明白为什么,但我希望这有助于解决您的问题。

关于java - Kotlin split with regex 工作不如预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52072404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com