小记String.split()

在开发JsoupXpath遇到一个很值得深思的小问题。

首先大家可以猜一猜,下面的代码会生成什么:

String x = "aa|bb";
x.split("|");

可以把下面的结果挡上好好想一想。
























我们期望的是什么?当然是很简单的["aa","bb"]嘛!但是,事实上呢,不是的!

结果会是:

["","a","a","b","b",""]

也许你遇见到了,那么就不说啥,送个大拇指!但是的第一想法是,怎么会?

转念一想,原来那么的微妙。

split 方法的参数是正则表达式,而我传进去的“|”恰好又是真正表达式的或,所以这段程序

x.split("|");

翻译过来的意思就是 按照随便什么字符或是随便什么字符分割x字符串就好了,所以x就被切成了charArray和了两个空串。所以按照我写的,程序执行的一点问题都没有。那么如何获得我们预期要的结果呢?
转义“|”,即

String x = "aa|bb";
x.split("\\|");

这样就得到预期的了。

总结

这个小问题给我感触还是挺深的,细节看功夫。

文章链接:http://www.wanghaomiao.cn/archives/9/ [复制] (转载时请注明本文出处及文章链接)

标签:none

评论已关闭