假设我有一个 int、float、string 等数组。是否有任何实用程序 API(例如 Commons、Guava)可以给我一个逗号分隔的字符串?
像这样,
int[] a = {1,2,3,4,5}.
String s = magicAPI.getCSV(a); // s == "1,2,3,4,5";
对于这个简单的用例,您可以简单地用逗号连接字符串。如果您使用 Java 8:
String csv = String.join(",", yourArray);
否则commons-lang有一个join()
方法:
String csv = org.apache.commons.lang3.StringUtils.join(yourArray, ",");
您提到了Google Guava,它具有以下Joiner
实用程序:
String s = Joiner.on(",").join(a);
我过去使用过OpenCSV。
StringWriter stringWriter = new StringWriter();
int[] a = {1,2,3,4,5};
String[] b = new String[a.length];
for ( int i = 0; i < a.length; i++) {
b[i] = a[i];
}
CSVWriter csvWriter = new CSVWriter(stringWriter, ",");
csvWriter.writeNext(b);
但是,对于这样一个简单的示例,您可能只想使用 aStringBuilder
和 afor
循环
在挖掘了更多之后,我发现http://static.springsource.org/spring/docs/1.1.5/api/org/springframework/util/StringUtils.html StringUtils API in Spring 可以做到。因为,我已经在使用 Spring,我想我会坚持下去。
Commons Apache CSV似乎整合了 3 个其他 CSV 库,尽管我找不到 2007 年后的版本。
快速浏览表明OpenCSV将通过CSVWriter
.
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');
// feed in your array (or convert your data to an array)
String[] entries = "first#second#third".split("#");
我创建了一种新方法来执行此操作,而不是使用 openCSV
public String convertArrayToCsv(String[] IncomingArray)
{
StringBuilder sb=new StringBuilder();
for (int i=0;i<IncomingArray.length;i++)
{
sb=sb.append(IncomingArray[i]);
if(i != IncomingArray.length-1)
{
sb.append(",");
}
}
return sb.toString();
}//end of convertArrayToCsv method