在java中的列表的最后一个值之后无法删除逗号

时间:2018-03-09 06:35:24

标签: java loops csv

我使用下面的代码来读取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',

请帮助解决它。

2 个答案:

答案 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));