用于将Array转换为CSV的Java API
假设我有一个int,float,string等数组。是否有任何实用程序API(例如Commons,Guava)会给我一个逗号分隔的字符串?
像这样,
int[] a = {1,2,3,4,5}. String s = magicAPI.getCSV(a); // s == "1,2,3,4,5";
我过去曾经使用过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);
但是,对于这样一个简单的例子,您可能只想使用StringBuilder
和for
循环
对于这个简单的用例,您可以使用逗号简单地连接字符串。 如果您使用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);
在挖掘了更多之后,我在Spring中找到了http://static.springsource.org/spring/docs/1.1.5/api/org/springframework/util/StringUtils.html StringUtils API。 既然,我已经在使用Spring了,我想我会坚持下去。
Commons Apache CSV似乎整合了3个其他CSV库,尽管我在2007年之后找不到发布。
快速浏览表明OpenCSV将通过CSVWriter
执行您想要的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
如果将数组转换为Eclipse Collections原始容器,则可以使用makeString()
方法之一。 如果未传入separator参数,则默认为“,”(逗号和空格)。
int[] array = {1,2,3,4,5}; IntList intList = IntLists.mutable.with(array); String s1 = intList.makeString(","); System.out.println(s1); // "1,2,3,4,5" String s2 = intList.makeString(); System.out.println(s2); // "1, 2, 3, 4, 5"
注意:我是Eclipse Collections的提交者