La mejor manera de convertir ArrayList a String en Kotlin

2 minutos de lectura

avatar de usuario
Asad Ali Choudry

Tengo una ArrayList de String en kotlin

private val list = ArrayList<String>()

quiero convertirlo en String con un separador “,”. Sé que podemos hacerlo programáticamente a través de un bucle, pero en otros idiomas tenemos funciones de mapeo disponibles como en Java.

StringUtils.join(list);

Y en Swift tenemos

array.joined(separator:",");

¿Hay algún método disponible para convertir ArrayList a String con un separador en Kotlin?

¿Y qué hay de agregar un separador personalizado como “-“, etc.?

avatar de usuario
Vladimir Bielený

Kotlin tiene joinToString metodo solo para esto

list.joinToString()

Puedes cambiar un separador como este

list.joinToString(separator = ":")

Si desea personalizarlo más, estos son todos los parámetros que puede usar en esta función

val list = listOf("one", "two", "three", "four", "five")
println(
    list.joinToString(
        prefix = "[",
        separator = ":",
        postfix = "]",
        limit = 3,
        truncated = "...",
        transform = { it.uppercase() }
    )
)

que salidas

[ONE:TWO:THREE:…]

  • ¿Qué hay de agregar un separador propio?

    –Asad Ali Choudhry

    9 de junio de 2019 a las 14:02

  • Hola, alguien me puede ayudar. Cuando el tamaño de mi lista de arreglos es uno, joinToString produce “,”?

    – etomun

    29 de julio de 2021 a las 7:23

avatar de usuario
FilipRistic

Kotlin también tiene un método para eso, se llama joinToString.

Simplemente puedes llamarlo así:

list.joinToString());

Debido a que, de forma predeterminada, usa una coma como separador, pero también puede pasar su propio separador como parámetro, este método toma bastantes parámetros además del separador, lo que permite formatear mucho, como prefijo, postfijo y más.

Puedes leer todo al respecto aquí

  • ¿Qué hay de agregar un separador propio?

    –Asad Ali Choudhry

    9 de junio de 2019 a las 14:02

  • Seguro que puede unirse a la cadena (separador: CharSequence = “, “, prefijo: CharSequence = “”, sufijo: CharSequence = “”, límite: Int = -1, truncado: CharSequence = “…”, transform: ((T ) -> CharSequence)? = nulo)

    – Mohammad Sommakia

    26 de noviembre de 2021 a las 13:33

En kotlin hay reduce función y es lo mismo que en javascript. Esta función itera todo el valor de la lista y se suma al valor anterior.

val listVal: List<String> = listOf("a","b","c","d")
val stringVal = listVal.reduce{ acc, s -> 
                "$acc : ${s.uppercase()}"
} 

¿Ha sido útil esta solución?