在Kotlin中打印0001到1000。如何为数字添加填充?

在Kotlin中打印0001到1000。如何为数字添加填充?,kotlin,Kotlin,我想打印0001(注意前面的3个0),每次递增1,达到1000停止。我怎么能在Kotlin做到这一点,而不用自己添加复杂的0 以下内容没有帮助,因为它没有0 for (i in 1..1000) print(i) 如果您对特定于JVM的方法感到满意,您可以在Java中执行您希望执行的操作: (1..1000).forEach { println("%04d".format(it)) } String.format是在StringsJVM中定义的扩展函数,它直接委托给底层的String.for

我想打印0001(注意前面的3个0),每次递增1,达到1000停止。我怎么能在Kotlin做到这一点,而不用自己添加复杂的0

以下内容没有帮助,因为它没有0

for (i in 1..1000) print(i)

如果您对特定于JVM的方法感到满意,您可以在Java中执行您希望执行的操作:

(1..1000).forEach { println("%04d".format(it)) }

String.format
是在
StringsJVM
中定义的扩展函数,它直接委托给底层的
String.format
,因此它不在通用标准库中。

在Kotlin中,您可以使用
String.format()
(与Java中相同):

在你的情况下,你可以用以下方式写下来:

(1..1000).forEach { println("%04d".format(it)) }
您可以使用:


它是Kotlin标准库的一部分,可用于所有平台。

需要明确的是,
用于
-循环也很好:

for(i in 1..1000)
    println("%04d".format(i))

带PadStart且无任何映射或多个循环

(0..1000).forEach { println(it.toString().padStart(4, '0')) }

使用字符串模板将在引擎盖下调用
toString()
,并使调用更短:

(0..1000).forEach { println("$it".padStart(4, '0')) }

首先映射它是不必要的。

只是一个小提示,padStart是使用CharSequence扩展函数()添加前面的0,而::println是一个反射。更多信息:@MarkoTopolnik嗯,这是一个函数引用,但它在文档的反射页面下有说明。@GeertBerkers是的。。。删除了评论。这听起来确实有误导性,但我想科特林使用“反射”这个词的方式有所不同。在任何情况下,函数引用都不涉及运行时惩罚。
(0..1000).forEach { println(it.toString().padStart(4, '0')) }
(0..1000).forEach { println("$it".padStart(4, '0')) }