使用 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 使用简单版本直到你做了一些分析并证明这是一个瓶颈,并且复杂版本确实在你的情况下表现得更好。即便如此,将它折叠成一个实用函数以保持主要代码清晰。)
这可能在这里被问过几次..我正在尝试在字符串的每四个字符之间添加 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 使用简单版本直到你做了一些分析并证明这是一个瓶颈,并且复杂版本确实在你的情况下表现得更好。即便如此,将它折叠成一个实用函数以保持主要代码清晰。)