0

我想知道如何删除数组中的前导空格和空字符串。所以我希望结果是: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());
            }
        }
4

5 回答 5

1

为此,您可以使用分词器。通过另外修剪你的字符串,你只会得到非空的部分:

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);
    }
}
于 2013-01-26T10:41:00.053 回答
0

这应该这样做:

String[] array = 
  "line 1, line 2, , ,   line3 line4,        line 5".trim().split("\\s*,[,\\s]*");
于 2013-01-26T10:47:27.210 回答
0

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

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

当然,您可能希望在代码中预编译该模式,而不是每次都重新编译它。

于 2013-01-26T10:47:48.010 回答
0

尝试

    Scanner sc = new Scanner(string);
    sc.useDelimiter(",\\s*");
    while(sc.hasNext()) {
        String next = sc.next();
        if (!next.isEmpty()) {
              ...
        }
    }
于 2013-01-26T10:51:58.970 回答
0

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

首先,删除逗号之间的空格:将“,[ ]+”替换为“,,”。示例:“a, , , ,b” => “a,,,,b”。

然后,删除重复的逗号:将“,”替换为“,”。示例:“a,,,,b” => “a,b”。

最后使用split方法(在String类中)用“,”分割字符串。遍历这个循环trim()对每个令牌做,你会得到它。

于 2013-01-26T10:37:37.293 回答