A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王广彬 中级黑马   /  2012-8-15 23:02  /  1542 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Sy
{
        public static void main(String[] args)
        {
                String str="ds.dfs.sdf";
                String[] ar=str.split(".");
                for(int i=0;i<ar.length;i++){
                        System.out.println(ar[i]);
                }
                String[] a=str.split("s");
                for(int i=0;i<a.length;i++){
                        System.out.println(a[i]);
                }
        }
}
为什么点不能作为分隔点,而其他字符就可以作为分割点?

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
看视频 正则那一章:
API:
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
回复 使用道具 举报
1)是点和|作为分隔符,出现此种错误,因为在在split(表达式)中,表达式其实是一个正则表达式,.和|是一种有特殊含义的字符,如果要使用此种字符作为分隔符,要使用转义字符加以转义方可得到正确结果。

   2)如果想要使用多个分隔符,可以使用|分隔开,比如使用 @和?作为分隔符,即为String.split(”@|?);

    3)使用String.split(””)时,往往容易忽略的一个地方就是分割的字符数组中,示例:“a/b/c/ / / /”.split(”/”)的长度不是6,而是3,因为分割后,java中会从后面开始检查所得的数组,把空的去掉,返回非空的3个数组。


回复 使用道具 举报
1、假如用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、假如用“”作为分隔的话,必须是如下写法:String.split("\\"),这样才能正确的分隔开,不能用String.split("");
“.”和“”都是转义字符,必须得加"\\";
3、假如在一个字符串中有多个分隔符,可以用“”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("andor");

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主应该看看API文档,
public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
所以说这里的参数是一个正则表达式。而.在正则表达式中是特殊字符,表示任意字符。所以要加"\\."才能起到想要的效果。
回复 使用道具 举报
首先"."在正则中表示是任何字符(与行结束符可能匹配也可能不匹配)的意思!属于预定义字符类中。"."在java源文件中被字节码文件中的编译器所解释,会被解释为java字节码中的默认编码中的编码。解决这种问题的方式就是在"."前面加上\\就可以解决了,这种方式在java编码中是受保护的意思!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马