convert - ¿Hay un equivalente directo en Java para str.join de Python?
string join java version (5)
No en la biblioteca estándar. Está en commons.apache.org/lang/api/org/apache/commons/lang/… de commons lang .
Posibles duplicados:
¿Cuál es la mejor manera de construir una cadena de elementos delimitados en Java?
Java: convierte la lista <String> en una cadena join () d
En Java, dada una colección, obtener el iterador y hacer un caso por separado para el primer (o último) elemento y el resto para obtener una cadena separada por comas parece bastante aburrido, ¿hay algo como str.join
en Python?
Aclaración adicional para evitar que se cierre como duplicado: prefiero no usar bibliotecas externas como Apache Commons.
¡Gracias!
Actualizar unos años después ...
No hay nada en la biblioteca estándar, pero Guava, por ejemplo, tiene Joiner
que hace esto.
Joiner joiner = Joiner.on(";").skipNulls(); . . . return joiner.join("Harry", null, "Ron", "Hermione"); // returns "Harry; Ron; Hermione"
Sin embargo, siempre puedes escribir el tuyo usando un StringBuilder
.
No, no hay. Aquí está mi intento:
/**
* Join a collection of strings and add commas as delimiters.
* @require words.size() > 0 && words != null
*/
public static String concatWithCommas(Collection<String> words) {
StringBuilder wordList = new StringBuilder();
for (String word : words) {
wordList.append(word + ",");
}
return new String(wordList.deleteCharAt(wordList.length() - 1));
}
No. No existe tal método. Al igual que muchos otros, hice mis versiones de tal combinación para un conjunto de cadenas y colecciones (iteradores).
Una solución de compromiso entre no escribir código "utils" adicional y no usar bibliotecas externas que he encontrado es el siguiente de dos líneas :
/* collection is an object that formats to something like "[1, 2, 3...]"
(as the case of ArrayList, Set, etc.)
That is part of the contract of the Collection interface.
*/
String res = collection.toString();
res = res.substring(1, res.length()-1);