convert java python string

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 ...

Java 8 vino al rescate


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);