lista data come:Come unire elementi di elenco, ma utilizzare un delimitatore diverso per l'ultimo elemento?
List<String> names = Lists.newArrayList("George", "John", "Paul", "Ringo")
vorrei trasformarlo in una stringa come questa:
George, John, Paul and Ringo
posso farlo con un po 'goffa StringBuilder
cosa in questo modo:
String nameList = names.stream().collect(joining(", "));
if (nameList.contains(",")) {
StringBuilder builder = new StringBuilder(nameList);
builder.replace(nameList.lastIndexOf(','), nameList.lastIndexOf(',') + 1, " and");
return builder.toString();
}
C'è un approccio un po 'più elegante? Non mi dispiace usare una libreria, se necessario.
NOTE:
- potevo usare un vecchio
for
ciclo con un indice, ma non sono alla ricerca di una soluzione del genere - ci sono virgole all'interno dei valori (nomi)
Le virgole sono mai all'interno dei valori? – Bohemian
@Bohemian nope (notato nella domanda) – Xorty
Perché non incapsulare la sua funzionalità in un metodo esterno? Qualcosa come 'public String mixListOfNamesAndReplaceLastCommaWithAnd (Lista nomi)' –
Anatoly