使用String的split方法你需要注意的地方

在API文档中,String类的split方法解释如下:

String[] split(String regex)
Splits this string around matches of the given regular expression.
这个方法的参数是一个regex,正则表达式,以这个正则表达式匹配的地方作为分割点,分割字符串,返回一个String数组;



接下来我们讲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

你可能感兴趣的:(Java)