Una forma rápida y sencilla de unir elementos de una matriz con un separador (lo opuesto a dividir) en Java [duplicado]
Ver pregunta relacionada con .NET
Estoy buscando una manera rápida y fácil de hacer exactamente lo opuesto a dividir para que se convierta ["a","b","c"]
en"a,b,c"
Iterar a través de una matriz requiere agregar una condición (si este no es el último elemento, agregue el separador) o usar una subcadena para eliminar el último separador.
Estoy seguro de que existe una forma certificada y eficiente de hacerlo (¿Apache Commons?)
¿Cómo prefieres hacerlo en tus proyectos?
Usando Java 8 puedes hacer esto de una manera muy limpia:
String.join(delimiter, elements);
Esto funciona de tres maneras:
1) especificando directamente los elementos
String joined1 = String.join(",", "a", "b", "c");
2) usando matrices
String[] array = new String[] { "a", "b", "c" };
String joined2 = String.join(",", array);
3) usando iterables
List<String> list = Arrays.asList(array);
String joined3 = String.join(",", list);
Si estás en Android puedesTextUtils.join(delimiter, tokens)
Prefiero Guava a Apache StringUtils para este problema en particular:
Joiner.on(separator).join(array)
En comparación con StringUtils, la API Joiner tiene un diseño fluido y es un poco más flexible; por ejemplo, null
los elementos pueden omitirse o reemplazarse por un marcador de posición. Además, Joiner
tiene una función para unir mapas con un separador entre clave y valor.
De hecho , Apache Commons Lang tiene un StringUtils.join
método que conectará String
matrices con un separador específico.
Por ejemplo:
String[] s = new String[] {"a", "b", "c"};
String joined = StringUtils.join(s, ","); // "a,b,c"
Sin embargo, sospecho que, como usted menciona, debe haber algún tipo de procesamiento condicional o de subcadena en la implementación real del método mencionado anteriormente.
Si tuviera que realizar la String
unión y no tuviera otras razones para usar Commons Lang, probablemente usaría la mía propia para reducir la cantidad de dependencias de bibliotecas externas.
Una solución rápida y sencilla sin incluir a terceros.
public static String strJoin(String[] aArr, String sSep) {
StringBuilder sbStr = new StringBuilder();
for (int i = 0, il = aArr.length; i < il; i++) {
if (i > 0)
sbStr.append(sSep);
sbStr.append(aArr[i]);
}
return sbStr.toString();
}