我使用下面的代码来读取csv文件并以逗号分隔格式列出其值,但我甚至在最后一个值之后得到逗号,这是不需要的。
String strFile = "C:\\Users\\msudhera\\Desktop\\data.csv";
BufferedReader br = null;
dto data = new dto();
String nextLine = "";
String[] country = null;
List<String> list1 = null;
String val = "";
try {
String list = null;
br = new BufferedReader(new FileReader(strFile));
while ((nextLine = br.readLine()) != null) {
country = nextLine.split(",");
list = country[0].toString();
list1 = Arrays.asList(list.substring(1,9));
String values2 = "";
for (String values: list1)
{
values2 = StringUtils.join("'"+values+"'", ',').toString();
val = data.setVal(values2);
System.out.println(data.getVal());
}
}
}
catch (Exception e){
System.out.println("caught Exception:" + e.getMessage());
}`
正在打印:
'20170213',
'20170213',
'20170213',
'20170420',
'20170509',
请帮助解决它。
答案 0 :(得分:1)
您正在调用错误的重载连接方法。您正在调用带有“var args”字符串的join
方法,因此它只是连接它。
您需要调用带有列表的列表以及
之类的分隔符StringUtils.join(theList, ","); //In your case the list is list1
另外,不要将String变量重命名为list
,因为它会产生误导。
编辑:我还看到你需要在两边用单引号填充字符串。如果不需要实际使用StringUtils
,则可以使用Java 8流实现相同的功能并进行收集。
list1.stream()
.map(element -> "'" + element + "'")
.collect(Collectors.joining(","));
答案 1 :(得分:0)
尝试此快速修复,直到您获得最终解决方案:
String arr[]= new String [list1.size()];
for (int i=0;i< list1.size();i++)
{
values2 = StringUtils.join("'"+values+"'", ',').toString();
val = data.setVal(values2);
arr[i]=data.getVal();
//System.out.println(data.getVal());
}
String temp= Arrays.toString(arr);
temp= temp.replace("[","");
temp= temp.replace("]","");
StringBuilder mystring = new StringBuilder(temp);
mystring.setCharAt(temp.length()-1, '');
System.out.println(String.valueOf(mystring));