在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库有没有适当的方法?

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

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

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

你可以用String#格式的扩展函数来代替,实际上,它以java.lang.String#格式内联到call-site函数中,例如:

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