当前位置: 代码迷 >> J2SE >> 关于正则匹配的新手有关问题.
  详细解决方案

关于正则匹配的新手有关问题.

热度:81   发布时间:2016-04-23 19:53:03.0
关于正则匹配的新手问题...
今天正则匹配遇到一个问题,就是用\D(非数字)去分割字符串时遇到了麻烦,“  1  2”(1前面有空格)分割结果会有一个空格(还是空字符?),求解为什么!!!

贴上源码
package 测试;

public class Pattern1 {
String regex="\\D+";

public String [] getString(String str){
return str.split(regex);
}

public static void main(String[] args) {
Pattern1 pa=new Pattern1();
String []str1=pa.getString("  1  2");
String []str2=pa.getString("1  2  ");
for(int i=0;i<str1.length;i++)
   System.out.print("丨"+str1[i]);
System.out.println();
for(int i=0;i<str2.length;i++)
   System.out.print("丨"+str2[i]);

}

}


输出结果为:
丨丨1丨2
丨1丨2
------解决思路----------------------
那个是空串,不是空格,可以把分隔符当做一个隔板,示意如下:

所以第一个的结果是"", "1", "2"

按照这个想法,第二个本来应该是 "1","2",""。 但split(reg) 相当于split(reg, limit = 0), limit = 0的意思是删去字符串数组结尾的所有空串,所以第二个的结果就变成了"1", "2"。如果你把第七行改成split(reg, -1), 则第二个的结果就变成了
------解决思路----------------------
1
------解决思路----------------------
2
  相关解决方案