Función joinToString En Kotlin

ANUNCIO
Loading...

En este tutorial aprenderás sobre la aplicación de la función joinToString en Kotlin con el propósito de crear un String legible a partir de los elementos de una colección.

Función joinToString()

La función de extensión joinToString() es una utilidad que transforma una colección de elementos en un String. Puedes personalizar al construcción a partir de parámetros que especifican el separador, prefijo, sufijo, límite o transformación.

// Ejemplo de sintaxis de joinToString() para iterables fun <T> Iterable<T>.joinToString( separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((T) -> CharSequence)? = null ): String
Lenguaje del código: Kotlin (kotlin)

Veamos el objetivo de cada parámetro nombrado:

  • separator: Es el conjunto de caracteres que se anexa como separador entre la conversión a string de cada elemento. El valor por defecto es una coma junto a un espacio en blanco (ej: "1, 2, 3")
  • prefix: Es el string que se usa como inicio del resultado final. El valor por defecto es un espacio en blanco.
  • postfix: Cadena que se anexa al final del resultado
  • limit: Determina una cantidad positiva de elementos que serán incluidos en la transformación. Su valor por defecto es -1, indicando que deben ser incluidos todos.
  • truncated: String que se agrega cuando se usa a limit para truncar el resultado
  • transform: Función lambda que transforma cada elemento de la colección y usarlo como parte del string final

A continuación verás varios ejemplos de joinToString() para comprender diferentes configuraciones al variar sus argumentos.

Aplicar Separador, Prefijo Y Sufijo A joinToString()

Tomemos como ejemplo la necesidad de imprimir una representación de la serie infinita, la cual se expresa como una sumatoria de n términos de la forma 1 + 2 + 3 ···.

Al aplicar joinToString() podremos llegar a la siguiente solución:

fun main() { val terms = 1..10 val serieRepresentation = terms.joinToString( separator = " + ", prefix = "S = ", postfix = " + ···" ) println(serieRepresentation) }
Lenguaje del código: Kotlin (kotlin)

Salida:

S = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + ···

La configuración para obtener el string con forma de expresión de serie requiere el uso de un separador con un símbolo de adición y espacios en sus laterales.

El prefijo será la notación de serie con la letra mayúscula S y operador de asignación (=). Por el lado del sufijo tenemos el término final designado con tres operadores de viñeta (·).

Aplicar Límite Y Truncado En joinToString()

Ahora modifiquemos el uso de joinToString() en el caso anterior para limitar los términos a solo 5.

fun main() { val terms = 1..10 val serieRepresentation = terms.joinToString( separator = " + ", prefix = "S = ", limit = 5, truncated = "···" ) println(serieRepresentation) }
Lenguaje del código: Kotlin (kotlin)

Salida:

S = 1 + 2 + 3 + 4 + 5 + ···

En este caso pasamos 5 como argumento para limit y a truncated los tres puntos viñeta que representan el infinito al truncar los elementos incluidos.

Aplicar Transformación A joinToString()

Probemos el uso del parámetro de transformación para conseguir la expresión de la serie anterior, pero acompañando a cada término de la letra a y finalizando con an. Por ejemplo: a1 + a2 + ··· + an.

fun main() { val terms = 1..10 val serieRepresentation = terms.joinToString( separator = " + ", prefix = "S = ", limit = 5, postfix = " + an", truncated = "···" ) { "a$it" } println(serieRepresentation) }
Lenguaje del código: Kotlin (kotlin)

Salida:

S = a1 + a2 + a3 + a4 + a5 + ··· + an

La función de transformación es sencilla, pasamos una lambda con una plantilla de string, donde concatenamos el carácter a junto al elemento actual a través de la referencia it. Esta nos da los términos consecutivos.

Para encontrar el espaciado entre el penúltimo término y an, agregamos a postfix para que haga parte del cierre del String.

¿Ha sido útil esta publicación?