黑马程序员技术交流社区
标题:
关于 String[] strs = "abc.ef".split(".");
[打印本页]
作者:
蓝色骨头
时间:
2013-4-21 18:20
标题:
关于 String[] strs = "abc.ef".split(".");
本帖最后由 蓝色骨头 于 2013-4-22 00:12 编辑
String[] strs = "abc.ef".split(".");
System.out.println(strs.length);
String[] strs2 = "abc.ef".split("c");
System.out.println(strs2.length);
结果为0和2
为什么 各位大神
作者:
晓风妮子
时间:
2013-4-21 18:30
"."在正则式里表示任意字符,程序运行的时候,按照每个字符都切了,因为你这里任何字符都符合".",最后字符串数组里面什么都没有。
将程序改为:
String[] strs = "abc.ef".split("\\.");// 这里需要加转义字符才能表示你想要切割的符号
System.out.println(strs.length);
String[] strs2 = "abc.ef".split("c");
System.out.println(strs2.length);
作者:
李尧
时间:
2013-4-21 18:34
本帖最后由 李尧 于 2013-4-21 20:07 编辑
split方法是正则表达式分割, "."代表任意字符 所以需要转义.
作者:
聖手`书生
时间:
2013-4-21 19:21
李尧 发表于 2013-4-21 18:34
split方法是正则表达式分割, "."代表任意字符 所以为0.需要转义.
1.因为 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[] strs = "abc.ef".split(".");改为String[] strs = "abc.ef".split("\\.");
2.第二个是用c把字符串分割成2段字符串,两个字符串返回作为字符串数组的两个元素,所以字符串的长度当然为2 了
作者:
蓝色骨头
时间:
2013-4-22 00:12
谢谢各位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2