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