dado una listaunirse a una lista <String> en Java con comas y "y"
List<String> l = new ArrayList<String>();
l.add("one");
l.add("two");
l.add("three");
tengo un método
String join(List<String> messages) {
if (messages.isEmpty()) return "";
if (messages.size() == 1) return messages.get(0);
String message = "";
message = StringUtils.join(messages.subList(0, messages.size() -2), ", ");
message = message + (messages.size() > 2 ? ", " : "") + StringUtils.join(messages.subList(messages.size() -2, messages.size()), ", and ");
return message;
}
que, por l, produce "una, dos y tres" . Mi pregunta es, ¿existe un método estándar (Apache-commons) que hace lo mismo ?, por ejemplo
WhatEverUtils.join(l, ", ", ", and ");
Para aclarar. Mi problema no es conseguir que este método funcione. Funciona justo como yo quiero, está probado y todo está bien. Mi problema es que no pude encontrar algún módulo tipo Apache-commons que implemente tal funcionalidad. Lo cual me sorprende, ya que no puedo ser el primero en necesitar esto.
Pero entonces tal vez todos los demás sólo ha hecho
StringUtils.join(l, ", ").replaceAll(lastCommaRegex, ", and");
No creo que haya una biblioteca de código abierto, pero aconsejo utilizar un paquete de recursos ya que no todos los idiomas usan la palabra en inglés "y". –
@slipset, ¿por qué no utiliza alguna combinación de una biblioteca conocida y simplemente la modifica un poco? Tenga en cuenta que "y" es una palabra en inglés, por lo que si existiera dicha biblioteca, tenía que tener soporte para varios idiomas – smas
Podría no haber sido claro, pero he escrito el método que muestro en mi pregunta y funciona como yo quiero. – slipset