在API文档中,String类的split方法解释如下:
String[] | split(String regex)
Splits this string around matches of the given
regular expression.
|
接下来我们讲2个方面,第一个,方法的参数,有几个经常用到的,特别的,也经常考的例子,我们需要重点注意一下:
如果我们需要将字符串以反斜杠( \)分割,那么,regex就应该表示为"\\\\";
如果以*分割,regex就应该表示为"\\*",类似的还有
. -------- "\\."
| -------- "\\|" 等等。
其中的原因也很简单,在Java正则表达式中\,.,|,*都具有特殊含义,我们要表示它们,就需要进行转义,所以要在前面加一个反斜杠,然后加的这个反斜杠也要转义,所以总共需要2个反斜杠,也就是说,一个反斜杠需要2个反斜杠来代替。这样不难理解出现"\\\\"四个反斜杠这个表达式了,因为我们首先只有一个转义字符“\\”,然后每个反斜杠用2个代替,总共就是4个了。
第二个方面,就是这个方法的返回值问题。
String s = "a/a/a";
String[] ss = s.split("/");
int n = ss.length;
此时我们得到的答案是3,这也很正常。
但是,如果s="a/a/"的时候,得到的答案却是2。
我们继续,当s="/a/"的时候,答案依旧是2。
当s = "//a"的时候,答案是3。
当s="/"的时候,答案是0。
当s="///"的时候,答案是0。
当s="aaa"的时候,答案是1。
由此我们得到结论:
当分割符在末尾时,忽略它就行
当分割符在首位时,我们不能忽略,并且分割出来的第一个元素是空字符串
当2个分割符相邻时,同样会在中间分割出一个空字符串
当字符串中无分割符时,返回整串,数目为1
当字符串中只有分割符时,返回0