java split()问题,帮我解答!

来源:百度知道 编辑:UC知道 时间:2024/06/16 10:29:34
String a="apple.abc.def";
如果写成:String[] b=a.split(".");
那b中什么也没有
如果写成:String[] b=a.split("\\.");
那b为:b={"apple","abc","def"};
这是为什么?

点号在JAVA中是对象操作符,属于特殊符号。在使用时候要表达出他的愿意,就需要转义。而在java中两个\\代表一个,因此出现了你上述结果。

因为splist中的 "."符号需要转义

public string[] split(string regex)
这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,看了 split 方法的实现代码就更坚定了我们的信心:

public string[] split(string regex, int limit) {
return pattern.compile(regex).split(this, limit);
}
split 的实现直接调用的 matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
只要将
String[] names = value.split(".");
改为
String[] names = value.split("\\.");
就可以了。

输出结果:
192
168
128
33