黑马程序员技术交流社区
标题:
字符串切割"."的疑问
[打印本页]
作者:
张承富
时间:
2013-6-15 18:03
标题:
字符串切割"."的疑问
public class StringTest
{
public static void main(String[] args){
String s="aaa.bbb.ccc.txt";
String[] s1=s.split(".");
sys(s1==null);
if(s1!=null ){
sys(s1[0]);
}
}
public static void sys(Object o){
System.out.println(o);
}
}
复制代码
为什么不能用spilt切割"."
作者:
孙金鑫
时间:
2013-6-15 18:21
String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
“.”这里的是点,所以要用反义字符\\,如 String[] s1=s.split("\\.");就可以了。
如果是“.”就是正则表达式中的“.”代表任意字符了。。。。
作者:
金辉
时间:
2013-6-15 18:28
split中当使用"+"、"?"、"\"、"*"、"^"、"."等特殊字符分割字符串时,若不进行特殊字符的转义,将得不到正确的结果,有些还会报错。
API中的描述,public String[] spilt(String regex),从参数名即可看出,方法传入的参数不是任意的字符串,而是正则表达式,
spilt方法实质上是调用的matcher类的spilt方法,而"+"、"?"、"\"、"*"、"^"、"."、"$"等这些字符在正则表达式中都有特殊的意义,
使用的时候需要对其进行转义
作者:
Heart
时间:
2013-6-15 18:47
没有对特殊字符“.”进行转义,反斜杠\是转义字符,所以可以通过\把特殊字符“.”转义为普通的字符“.”;
但是反斜杠“\”也是一个特殊字符,也要对其进行转义,所以要再加一个\,
最后String[] s1=s.split("\\.");就可以了。
作者:
杜光
时间:
2013-6-15 20:01
public class Test
{
public static void main(String[] args)
{
String s="ab.cd.ef.gh.ij";
String[] ss=s.split("\\.");
System.out.println(ss.length);
}
}
复制代码
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[] stings = stings.split(".");
改为
String[] stings = stings.split("\\.");
就可以了。
作者:
孙百鑫
时间:
2013-6-22 01:22
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2