删除每行的最后一个逗号

时间:2015-05-11 02:56:35

标签: java csv

我在代码中处理尾随逗号时遇到问题,我已尝试过该网站的一个解决方案,但仍然无法解决。任何帮助都会很棒。

这是我的代码。

    String delimiter = "!@#$";
    for ( String data1: overall.keySet() )
    resultString += data1 + "," + overall.get(data1).toString() +  System.getProperty("line.separator");

    resultString = resultString.replace("," + delimiter , "");

这是我在这个网站上找到的那个,它只删除了最后一行的最后一个逗号。

resultString += data1 + "," + overall.get(data1).toString() +  System.getProperty("line.separator");

resultString = resultString.replaceAll(",$", "");

我当前的输出是

a,b,
c,d,
e,f,

而不是

a,b
c,d
e,f

3 个答案:

答案 0 :(得分:1)

如果每行都以逗号显示,则可以删除最后一个字符:

resultString = resultString.substring(0, resultString.length()-1)

答案 1 :(得分:1)

如果您只想从具有逗号分隔值的字符串中删除尾随逗号,可以尝试replaceAll

String str = "a,b,c,d,e,f,";
str = str.replaceAll(",$", "");
System.out.println(str);

它打印: a,b,c,d,e,f

此解决方案还可以优雅地处理空列表(空字符串),而不是需要对此类案例进行特殊处理的lastIndexOf / substring解决方案。在上面的解决方案中,$是用于匹配字符串结尾的特殊符号。

如果您有一个String数组,那么请在循环中使用它:

        String[] stringsArray = new String[] {"a,b", "c,d", "e,f"};
        for(String str : stringsArray) {
            str = str.replaceAll(",$", "");
            System.out.println(str);
        }

输出是:

a,b c,d e,f

答案 2 :(得分:0)

您必须使用replaceAll()代替replace() - > resultString = resultString.replaceAll(",$", "");因为replaceAll()需要regex$表示输入结束。

示例:

public static void main(String[] args) {
    String s = "abc,def,";
    System.out.println(s.replaceAll(",$", ""));
}

O / P:

abc,def

编辑:根据您的代码。

您应该将代码更改为:

 for ( String data1: overall.keySet() ){
    resultString += data1 + "," + overall.get(data1).toString() +  System.getProperty("line.separator");
    resultString = resultString.replaceAll(",$", "");
}