使用 kotlin 字符串 functions/string 格式添加空格

Add spaces using kotlin string functions/string format

这可能在这里被问过几次..我正在尝试在字符串的每四个字符之间添加 space (8888319024981442)。我的字符串长度恰好是 16。String.format 没有帮助

避免使用拆分或在内存中创建多个字符串。

有没有kotlin function/String.format可以快速上手

我不认为有一种非常简单的方法可以做到这一点,但有一种传统的方法:

val number = "8888319024981442"
val list = mutableListOf<String>()
for (i in 0..3) { list.add(number.substring(i*4, (i+1)*4))}
println(list.joinToString(" "))

编辑

或@IR42简单回答

number.chunked(4).joinToString(separator = " ")

我不认为有一个既简单又优雅的答案并且避免了所有临时对象。

对于前者,IR42 使用 chunked() 可能是最好的。

这是对后者的刺探:

val number = "8888319024981442"
val result = buildString {
    for (i in 0 until number.length) {
        if (i % 4 == 0 && i > 0)
            append(' ')
        append(number[i])
    }
}
println(result) // '8888 3190 2498 1442'

这只会创建一个 StringBuilder,然后从中创建一个 String — 这是可能的最小值*。这有点难看 long-winded,但如果避免所有临时对象真的很重要**,那么这可能是您能做的最好的事情了。

(* 或者至少,给定条件的最小可能值。为了获得更好的性能,请考虑传递 StringBuilder 本身而不从中创建 String。更好的是,使用现有的 StringBuilder 而不是创建一个。当然,所有这些都需要更改周围的代码。)

(** 虽然在某些情况下 非常重要,但实际上它们很不寻常。我会 recommend 使用简单版本直到你做了一些分析并证明这是一个瓶颈,并且复杂版本确实在你的情况下表现得更好。即便如此,将它折叠成一个实用函数以保持主要代码清晰。)