split用来对字符串按某种规则进行分割
stringObj.split (string regex,[int maxSplit] )
regex,regular expression,是正则表达式,功能显然要比普通string要强,但是需要了解正则,本人不甚了解。。。
maxSplit为可选项,用来限制返回数组中的元素个数(最大分割数)
其返回值为一字符串数组,通常写法String[] s = stringObj.split ( "a" ) ;
例1:
String str = "Java string split test";
String[] s = str.split(" ");
for (int i = 0; i < strarray.length; i++)
System.out.println(s[i]);
将输出:
Java
string
split
test
例2:
String str="Java string split test";
String[] s = str.split(" ",2);//最多分割成2个字符串
for (int i = 0; i < s.length; i++)
System.out.println(s[i]);
将输出:
Java
string split test
可见,从字符串前向后扫描,符合条件即分割,分割到maxSplit数量-1时,字符串后面将不扫描,直接作为字符串数组的最后一个字符串返回。
例3:
String str="192.168.0.1";
String[] s = str.split(".");
for (int i = 0; i < s.length; i++)
System.out.println(s[i]);
结果是没输出,将split(".")改为split( "\\." ),将得到想要结果:
192
168
0
1
原因为. | + * 等在正则表达式中为特殊字符,所以并不能达到我们预期的效果,要使用\\让其转义变为正常字符。
因为在Java字符串中是用"\\"来表示"\"的,所以如果字符串是这样:String Str="a\\b\\c";实际上字符串为a\b\c,此事要用 \ 作为分隔,就要写成这样:String.split("\\\\"),
其实这个问题有点钻牛角尖了,(本人认为那四个\\\\,前两个是转义的\\,后两个是"a\\b\\c"中的\\,表示的是\) -_-|||本人也不是很明白,待以后深入了解再来辨析。
又如String[] aa = "aaa|bbb|ccc".split("|");是不行的,需要String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果。
注意这里讲的全是 \ ,和 / 没关系。
例4:
String str="Java string-split#test";
String[] s = str.split(" |-|#");
for (int i = 0; i < s.length; i++)
System.out.println(s[i]);
结果为
Java
string
split
test
同样也可以这么使用 String[] s = "a=1 and b=2 or c=3".split( "and|or" );
如果在一个字符串中有多个分隔符,可以用"|"作为连字符。其实都是正则表达式的用法了,没有必要再列举了。
以上为综合一些帖子博客外加自己的一些理解综合而成,希望可以给大家一些启发,以后遇到还会有补充。