如何解决使用Kotlin字符串函数/字符串格式添加空格
这可能在这里被问过几次了。我想在字符串的每个四个字符之间添加空格的方法(8888319024981442)。我的字符串长度恰好是16。String.format
没有帮助
避免使用split或在内存中创建多个字符串。
有没有可以快速使用的kotlin函数/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
—这是可能的最小值*。这有点丑陋且漫长,但是如果要避免所有临时对象确实很重要**,那么这大概就是您可以做的最好的事情。
(*或至少是在给定条件下的最小值。为了获得更好的性能,请考虑传递StringBuilder
本身而不从其创建String
。甚至更好的是,使用现有的{{1 }}而不是完全创建一个。但是当然,所有这些都需要更改周围的代码。
(**虽然在某些情况下此非常重要,但实际上它们是非常不寻常的。我会recommend使用简单的版本,直到完成为止进行一些分析,并证明这是一个瓶颈,复杂版本确实可以在您的情况下更好地运行。即使如此,也可以将其折叠到实用程序函数中以使主代码清晰可见。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。