Cuerda de relleno en Kotlin

Estaba intentando rellenar una string en Kotlin para lograr una alignment adecuada en la salida de la console. Algo en esta línea:

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

Terminé codificándolo de esta manera, haciendo trampa con el formatting String.to de Java:

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

¿Hay una forma adecuada de hacer esto con las bibliotecas de Kotlin?

Puede usar la .padEnd(length, padChar = ' ') de kotlin-stdlib para eso. Acepta la length deseada y un padChar opcional (por defecto es el espacio en blanco):

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

También hay padStart que alinea el relleno en la otra dirección.

Puede utilizar la function de extensión de formatting String # , de hecho, está inline a la function call-site con formatting java.lang.String # por ejemplo:

 mutableList.forEach { cp -> println("%-45s - %s".format(cp.name, cp.value)) } 
  • parámetro de function final o val o en Kotlin?
  • Cómo contar el time de ejecución de lo observable
  • java.lang.IllegalStateException: TextView no debe ser nulo (Android / Kotlin)
  • Obtener class de list con generics, por ejemplo: Lista <Número> :: class
  • Accediendo a las properties de bean Java desde Kotlin
  • Formatee Kotlin String con múltiples ocurrencias
  • Complemento Kotlin-allopen + @JvmField en un val no suficientemente final
  • Escribir en una database con Android
  • Broadcast Receiver en la class de aplicación android
  • Cómo regresar desde el tipo de function Kotlin
  • Kotlin: cómo acceder a las properties en el constructor