我想在数组中的字符串后面加上双引号,然后再将它们作为单个字符串连接起来(保留引号)。是否有任何字符串库可以做到这一点?我已经尝试过Apache
commons StringUtils.join和Google番石榴中的Joiner类,但是找不到任何用双引号引起来的东西。
我的输入将是一个数组,如下所述:
String [] listOfStrings = {"day", "campaign", "imps", "conversions"};
所需的输出应如下所示:
String output = "\"day\", \"campaign\", \"imps\", \"conversions\"";
我知道我可以遍历数组并附加引号。但是,如果有的话,我想提供一种更清洁的解决方案。
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.html" target="_blank">stream()
.collect(Collectors.joining("\", \"", "\"", "\""));
String.join
非常朴实。请勿在称为的方法中使用wrapWithQuotesAndJoin
。
String result = listOfString.isEmpty() ? "" : "\"" + String.join("\", \"", listOfStrings) + "\"";
帮自己一个忙,并使用图书馆。番石榴立刻浮现在脑海。
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)
。
问题内容: 我有点困惑。我在任何地方都找不到答案;( 我有一个String数组: 然后我通过以下方式将其转换为字符串: 我期望得到字符串,但是我却得到了字符串。 我该如何在Java中做到这一点?我正在使用Eclipse IDE 问题答案: 使用 StringBuilder 而不是StringBuffer,因为它比StringBuffer快 。 样例代码 这是使用字符串连接的更好解决方案的原因:当连
问题内容: 是否可以在Java中将单个字符附加到数组或字符串的末尾 例如: 问题答案:
问题内容: 我是Java新手,所以我几乎不需要帮助 我有 我想向此数组(脚本)添加新的字符串(string1,string2)作为示例 我想在以后的阶段中不添加新字符串 我该怎么办? 问题答案: 您无法在Java中调整数组的大小。 声明数组的大小后,它将保持固定。 相反,您可以使用具有动态大小的对象,这意味着您无需担心其大小。如果数组列表的大小不足以容纳新值,则它将自动调整大小。
问题内容: 我是一名刚从C ++转到Java的学生。 在Java中,为String和Char数组定义单独的数据类型的主要原因可能是什么? 两者有什么区别? 由于我只学习过C ++,所以直到现在我仍对它们有同感。请尽可能澄清。 问题答案: 是一成不变的。数组不是。字符串是在下面用char数组实现的,但是每次您尝试对其进行修改(例如,使用串联,替换等)时,它都会为您提供一个 新 对象。 因此,它表现为
问题内容: 我有阵列 转换为字符串: 串: 以及如何将此字符串转换回数组? 问题答案: 尝试我的stringToDeep()方法转换回Array。
问题内容: 我试图理解一个到字符串,一个的字符串表示形式到转换…我将我的转换成一个要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回显给客户端。 当我从Java应用程序发送数据时… 字节发送.. 发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示形式,该数据将通过电线发送): 在python端,python服务器将字符串返回给调用方(我可以