在Kotlin填充字符串

时间:2017-07-25 17:18:58

标签: kotlin

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

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

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

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

使用Kotlin库有没有正确的方法?

2 个答案:

答案 0 :(得分:11)

您可以使用kotlin-stdlib中的.padEnd(length, padChar = ' ') extension。它接受所需的length和可选的padChar(默认为空格):

mutableList.forEach {
    println("${it.name.padEnd(45)} - ${it.value}")
}

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

答案 1 :(得分:4)

您可以改为使用String#format扩展功能,事实上,它以java.lang.String#format为内嵌功能,例如:

mutableList.forEach { cp ->
    println("%-45s - %s".format(cp.name, cp.value))
}