Java-将引号附加到数组中的字符串并连接数组中的字符串
我想在数组中的字符串后面加上双引号,然后再将它们作为单个字符串连接起来(保留引号)。是否有任何字符串库可以做到这一点?我已经尝试过Apache
commons StringUtils.join和Google番石榴中的Joiner类,但是找不到任何用双引号引起来的东西。
我的输入将是一个数组,如下所述:
String [] listOfStrings = {"day", "campaign", "imps", "conversions"};
所需的输出应如下所示:
String output = "\"day\", \"campaign\", \"imps\", \"conversions\"";
我知道我可以遍历数组并附加引号。但是,如果有的话,我想提供一种更清洁的解决方案。
回答:
使用Java 8+
Java
8具有Collectors.joining()
及其重载。它也有String.join
。
使用Stream
和Collector
Function<String,String> addQuotes = s -> "\"" + s + "\"";String result = listOfStrings.stream()
.map(addQuotes)
.collect(Collectors.joining(", "));
String result = listOfStrings.stream() .map(s -> "\"" + s + "\"")
.collect(Collectors.joining(", "));
(虽然有点骇人听闻)
String result = listOfStrings.stream() .collect(Collectors.joining("\", \"", "\"", "\""));
使用 String.join
非常朴实。请勿在称为的方法中使用wrapWithQuotesAndJoin
。
String result = listOfString.isEmpty() ? "" : "\"" + String.join("\", \"", listOfStrings) + "\"";
使用旧版Java
帮自己一个忙,并使用图书馆。番石榴立刻浮现在脑海。
使用番石榴
Function<String,String> addQuotes = new Function<String,String>() { @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));
没有图书馆
String result;if (listOfStrings.isEmpty()) {
result = "";
} else {
StringBuilder sb = new StringBuilder();
Iterator<String> it = listOfStrings.iterator();
sb.append('"').append(it.next()).append('"'); // Not empty
while (it.hasNext()) {
sb.append(", \"").append(it.next()).append('"');
}
result = sb.toString();
}
:所有解决方案均假定listOfStrings
是a List<String>
而不是a
String[]
。你可以转换String[]
成List<String>
使用Arrays.asList(arrayOfStrings)
。您可以Stream<String>
直接从String[]
using获取Arrays.stream(arrayOfString)
。
以上是 Java-将引号附加到数组中的字符串并连接数组中的字符串 的全部内容, 来源链接: utcz.com/qa/409690.html