删除空格和引导逗号

时间:2013-01-26 10:31:17

标签: java

我想知道如何删除数组中的前导空格和空字符串。 所以我希望结果是:line 1,line 2,line3 line4,line5

String string="line 1, line 2, , ,   line3 line4,        line 5";
        ArrayList<String> sample=new ArrayList<String>();
        sample.add(string);
        ArrayList<String> result=new ArrayList<String>();
        for (String str : sample) {
            if(str!=null && !str.isEmpty()){`enter code here`
                result.add(str.trim());
            }
        }

5 个答案:

答案 0 :(得分:1)

为此,您可以使用tokenizer。通过额外trim修改你的字符串,你只能得到非空的部分:

StringTokenizer st = new StringTokenizer("line 1, line 2, , ,   line3 line4,        line 5", ",");
ArrayList<String> result = new ArrayList<>();
while (st.hasMoreTokens()) {
    String token = st.nextToken().trim();
    if (!token.isEmpty()) {
        result.add(token);
    }
}

答案 1 :(得分:0)

我会以这种方式使用2个正则表达式:

首先,删除逗号之间的空格:replace“,[] +,”by“,,”。示例:“a ,,,, b”=&gt; “一个,,,, B”。

然后,删除重复的逗号:将“,,”替换为“,”。示例:“a ,,,, b”=&gt; “A,B”。

最后使用split方法(在String类中)将字符串拆分为“,”。 通过这个循环迭代对每个令牌执行trim(),你就可以得到它。

答案 2 :(得分:0)

这应该这样做:

String[] array = 
  "line 1, line 2, , ,   line3 line4,        line 5".trim().split("\\s*,[,\\s]*");

答案 3 :(得分:0)

这是一个简单的正则表达式。您想删除逗号之前的所有空格,以及之后的所有空格和逗号。这给了你:

regex.Pattern(" *,[ ,]*").compile().matcher(string).replaceAll(",");

可能你希望在你的代码中预先编译模式,而不是每次都重新编译它。

答案 4 :(得分:0)

尝试

    Scanner sc = new Scanner(string);
    sc.useDelimiter(",\\s*");
    while(sc.hasNext()) {
        String next = sc.next();
        if (!next.isEmpty()) {
              ...
        }
    }