我在包含+-和\\的字符串上使用了拆分方法,我不想得到那个空值,下面是我的代码
public class Test {
public static void main(String args[]) {
String ab="+computer-science|lambda+sigma";
String[] lesAndz = ab.split("[\\W]");
for(int i=0;i<lesAndz.length;i++){
System.out.println(i+" : ["+lesAndz[i]+"]");
}
}
}我要它输出
0 : [computer]
1 : [science]
2 : [lambda]
3 : [sigma]但是我得到了
0 : []
1 : [computer]
2 : [science]
3 : [lambda]
4 : [sigma]我试过
String[] lesAndz = ab.split("[\\W]", -1);但却没有用
发布于 2018-05-26 21:23:43
我会用空格代替分隔字符。然后,可以在拆分之前使用trim()删除两端的任何额外字符。我假设结果中不需要任何空字符串,所以我稍微修改了表达式。
ab.replaceAll("\\W+", " ").trim().split(" ")发布于 2018-05-26 21:15:39
您可以使用子字符串切断第一个字符:
String ab = "+computer-science|lambda+sigma";
String[] lesAndz;
if(Character.toString(ab.charAt(0)).matches("[\\W]")) {
lesAndz = ab.substring(1,ab.length()).split("[\\W]");
} else {
lesAndz = ab.split("[\\W]");
}
for(int i=0;i<lesAndz.length;i++){
System.out.println(i+" : ["+lesAndz[i]+"]");
}输出:
0 : [computer]
1 : [science]
2 : [lambda]
3 : [sigma]这两种方法都适用,字符串以alpha-数值开始,字符串以非alpha-数字字符开头,例如:
+computer-science|lambda+sigmacomputer-science|lambda+sigma发布于 2018-05-26 21:20:38
根据Java,https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
将不包括尾随空字符串,但前面的空字符串将包含空字符串。您只需再做一次检查,看看前面的字符串是否为空,并将其从列表中删除。
https://stackoverflow.com/questions/50547009
复制相似问题