Dato un elencoIscrizione a un elenco <String> in Java con virgole e "e"
List<String> l = new ArrayList<String>();
l.add("one");
l.add("two");
l.add("three");
Ho un metodo
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;
}
che, per l, produce "uno, due e tre" . La mia domanda è: esiste un metodo standard (apache-commons), che fa la stessa cosa ?, per esempio
WhatEverUtils.join(l, ", ", ", and ");
Per chiarire. Il mio problema non è quello di far funzionare questo metodo. Funziona esattamente come lo voglio io, è testato e va tutto bene. Il mio problema è che non sono riuscito a trovare alcun modulo apache-commons-like che implementa tale funzionalità. Il che mi sorprende, dal momento che non posso essere il primo a aver bisogno di questo.
Ma allora forse tutti gli altri hanno appena fatto
StringUtils.join(l, ", ").replaceAll(lastCommaRegex, ", and");
Non penso che ci sia una tale libreria open source, ma consiglio di usare un pacchetto di risorse poiché non tutte le lingue usano la parola inglese "and". –
@slipset, perché non usi un po 'di join dalla libreria conosciuta e lo modifichi un po'? Si noti che "e" è una parola inglese, quindi se tale libreria esistesse, doveva avere il supporto di più lingue – smas
Forse non sono stato chiaro, ma ho scritto il metodo che mostro nella mia domanda e funziona esattamente come voglio. – slipset