一个String字符串的问题2

背景:

今天遇到个问题:
String str = "clu";
String[] arrays0 = str.split(".");
String[] arrays1 = str.split("\\.");
log.info("####hi0" + gson.toJson(arrays0));
log.info("####hi1" + gson.toJson(arrays1));


output:
14:20:59.734 [main] INFO  com.clu.bleach.demo.StringDemo - ####hi0[]
14:20:59.737 [main] INFO  com.clu.bleach.demo.StringDemo - ####hi1["clu"]

一个是得到了空String数组,另一个则拥有一个字符的数组。为什么会这样呢?

分析:
String.split方法是接收正则表达式的,而默认情况下,split方法就把点号,当作正则表达式来处理了。点号在java的正则表达式里表示的是所有的字符。所以如果我们要以点号作为分隔符就必须对点号进行转义,通常用反斜杠作为转义字符"\.",所以上面我们就要split("\\.")来分隔,这个是因为java里不能识别反斜杠,必须要再用反斜杠进行转义才能做到编译不出错。

找了一篇java正则表达式的文章,如下:
http://www.tutorialspoint.com/java/java_regular_expressions.htm

还有一个中文版的:
http://www.runoob.com/java/java-regular-expressions.html

----EOF----

猜你喜欢

转载自xfxlch.iteye.com/blog/2263416