我有{{1>} 字符串。是否有 Java 便捷方法将此List
转换为 CSV List
?所以“test1,test2,test3”是包含“test1”“test2”“test3”的List 3 String元素转换的结果
我可以自己编写方法来转换String
但是这可能已经由 API 实现了吗?
答案 0 :(得分:35)
Apache Commons Lang包含StringUtils.join()方法,正是出于此目的。请注意,存在不同的风格。
截至2014年3月,Java 8现在有StringJoiner
答案 1 :(得分:9)
有一个名为Joiner的Guava类可以轻松创建这些字符串。
执行Joiner.on(",").join(yourStrings)
答案 2 :(得分:7)
org.springframework.util.StringUtils
中有一些有用的方法。
示例:
String text = StringUtils.arrayToCommaDelimitedString(new Object[]{"test1", "test2", "test3"});
了解更多详情: http://static.springsource.org/spring/docs/1.2.9/api/org/springframework/util/StringUtils.html
答案 3 :(得分:7)
写了这个简单的方法;
String listToCsv(List<String> listOfStrings, char separator) {
StringBuilder sb = new StringBuilder();
// all but last
for(int i = 0; i < listOfStrings.size() - 1 ; i++) {
sb.append(listOfStrings.get(i));
sb.append(separator);
}
// last string, no separator
if(listOfStrings.size() > 0){
sb.append(listOfStrings.get(listOfStrings.size()-1));
}
return sb.toString();
}
答案 4 :(得分:6)
如果您使用的是Java 8
List<String> objects= Arrays.asList("Test1","Test2","Test3");
String objectsCommaSeparated = String.join(",", objects);
System.out.println(objectsCommaSeparated);
使用Streams
String objectsCommaSeparated = objects.stream().collect(Collectors.joining(","));
System.out.println(objectsCommaSeparated);
答案 5 :(得分:5)
如果您想使用核心java,我认为您可以使用以下内容。
java.util.Arrays.toString(list.toArray(new String[list.size()]).replace("[", "\"").replace("]", "\"");
警告:我没有检查过所有这些情况。 ;)
Arrays.toString会产生类似
的东西[a], [b], [c]
如果您列出包含a, b, c
我们可以使用以下逗号分隔的优点,只需删除方括号,并将"
替换为逗号在数据中的情况。如果你不需要这个,你可以replace("[", ""
答案 6 :(得分:2)
public class StringUtil {
public String toCsv(final List<?> list) {
return toString(list, ',');
}
public String toString(final List<?> list, char delimiter) {
final StringBuilder b = new StringBuilder();
if (list != null) {
for (int i = 0; i < list.size(); i++) {
b.append(list.get(i).toString());
if (i != list.size() - 1) {
b.append(delimiter);
}
}
}
return b.toString();
}
}
答案 7 :(得分:1)
不,JDK中没有可用的便捷方法。您可以创建自己的,但对于一般情况,这并不像看起来那么简单(例如,当字段包含分隔符,换行符或textdelimiter时):
示例:
String[] fields = { "\n", ""he said \"hello\"", "," }
应该给你这个:
"
","he said ""hello""",","
编辑:这是一个提议的RFC for CSV。
EDIT2:如果有人对实施感兴趣,请发表评论,我家里的硬盘上有一个。
答案 8 :(得分:1)
这就是我正在做的事情
@Test
public void testString(){
List<String> listOfWords = Arrays.asList("Some","Other","lalala");
final String fields = listOfWords.stream().reduce((t, u) -> t + "," + u).get();
System.out.println("Look "+fields);
}
答案 9 :(得分:1)
此代码处理包含引号,逗号和其他麻烦字符的数据:
公共类ToCsv {
private static final String QUOTE = "\""; private static final Pattern NON_WORD = Pattern.compile(".*\\W.*"); public final static String toCsv(final List<Object> list) { final StringBuilder sb = new StringBuilder(); String sep = ""; for (final Object object : list) { String s = object.toString(); final Matcher m = NON_WORD.matcher(s); if (m.matches()) { if (s.contains(QUOTE)) { s = s.replaceAll(QUOTE, "\"\""); } sb.append(sep).append(QUOTE).append(s).append(QUOTE); } else { sb.append(sep).append(s); } sep = ","; } return sb.toString(); } }
答案 10 :(得分:1)
Android用户,您可以使用以下内容:
TextUtils.join(",", getCollectionOfStrings());
第二个参数将接受Object []或Iterable类。
答案 11 :(得分:0)
使用此代码
public static String listToString(List list) {
int len = list.size();
int last = len - 1;
StringBuffer sb = new StringBuffer(2 * (len + 1));
sb.append('{');
for (int i = 0; i < len; i++) {
sb.append(list.get(i));
if (i != last) {
sb.append(',');
}
}
sb.append('}');
return sb.toString();
}
答案 12 :(得分:0)
我知道已经很晚了,但是我看不到有人用Java 8 way来回答:
String csvString = String.join(",", myStringList);
答案 13 :(得分:0)
要转换 List to String Java 吗?让我们看一下如何在Java中将元素的Java集合列表转换为字符串。
Java的“基本列表”是有序集合或默认序列。
List接受重复元素,而Map不接受重复值,并且也将对象保存为键值对。
我们可以在调试代码时以可读的形式打印List元素的内容,这很有帮助。 从下面的Java程序中,让我们看看如何使用toString方法将Java列表转换为字符串数组。
我们正在传递整数参数(数字)以使用Arrays asList()方法创建Java字符串数组。
换句话说,我们将整数列表作为数组传递给list。 From below Java program, lets see how to convert Java list to string array using toString method.