我想在数组中的字符串后面加上双引号,然后再将它们作为单个字符串连接起来(保留引号)。是否有任何字符串库可以做到这一点?我已经尝试过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。
问题内容: 我试图将字符串数组作为参数传递给Wetland类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表。 问题答案: 您已经具有内置方法:- 注 : -您应该使用没有。 返回一个不同的-> ,不能将其类型转换为。 然后,您将不得不使用方法,这不是很好。所以就用 注意 :-返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并用于向其中添加元素。所以,那