在Kotlin填充字符串

gil*_*des 11 kotlin

我试图在Kotlin中填充一个字符串,以在控制台输出上实现一些正确的对齐.这些方面的东西:

accountsLoopQuery                             - "$.contactPoints.contactPoints[?(@.contactAccount.id)]"
brokerPassword                                - *****
brokerURI                                     - tcp://localhost:61616
brokerUsername                                - admin
contactPointPriorityProperties                - "contactPointPriority.properties"
customerCollection                            - "customer"
customerHistoryCollection                     - "customer_history"
defaultSystemOwner                            - "TUIGROUP"
Run Code Online (Sandbox Code Playgroud)

我最终用这种方式编写代码 - 用Java的String.format作弊:

mutableList.forEach { cp ->
    println(String.format("%-45s - %s", cp.name, cp.value))
}
Run Code Online (Sandbox Code Playgroud)

有没有一个正确的方法来与Kotlin库这样做?

hot*_*key 16

您可以使用.padEnd(length, padChar = ' ')扩展kotlin-stdlib该.它接受所需的length 和可选的padChar(默认是空格):

mutableList.forEach {
    println("${it.name.padEnd(45)} - ${it.value}")
}
Run Code Online (Sandbox Code Playgroud)

还有padStart在另一个方向上对齐填充.


hol*_*ava 5

你可以改用String#format扩展函数,实际上,它是内联到调用站点函数的java.lang.String#format例如:

mutableList.forEach { cp ->
    println("%-45s - %s".format(cp.name, cp.value))
}
Run Code Online (Sandbox Code Playgroud)