使用番石榴,有两个解决方案:
解决方案1:
Function addQuotes = new Function() {
@Override public String apply(String s) {
return new StringBuilder(s.length()+2).append('"').append(s).append('"').toString();
}
};
String result = Joiner.on(", ").join(Iterables.transform(listOfStrings, addQuotes));
解决方案2 :(由于评论中提到的原因,此解决方案绝对不鼓励)
String result = Joiner.on("\", \"").join(listOfStrings);
if (!listOfStrings.isEmpty()) {
result = "\"" + result + "\"";
}
使用Java 8,它变得简单得多,但是我提供了另外两种解决方案:
解决方案3:
Function addQuotes = (s) -> new StringBuilder(s.length()+2).append('"').append(s).append('"').toString();
String result = listOfStrings.stream()
.map(addQuotes)
.collect(Collectors.joining(", "));
解决方案4 :(无可重用功能)
String result = listOfStrings.stream()
.map((s) -> "\"" + s + "\"")
.collect(Collectors.joining(", "));
注意:所有解决方案都假定listOfStrings是List< String>而不是String []。您可以将String []转换为List< String>使用Arrays.asList(arrayOfStrings)。您可以获得一个Stream< String>直接从一个String []使用Arrays.stream(arrayOfString)。