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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘星 中级黑马   /  2012-8-10 02:21  /  1961 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘星 于 2012-8-10 11:20 编辑

本来是想对一个文件名用"."进行切割的,然后得到文件的扩展名,
因为文件扩展名都是用点连接的,但是我在用的时候发现切割不了,
这是为什么?
class bbb
{
        public static void main(String[] args)
        {
                //String str="aaa,bbb,ccc,ddd"; //对字符串用逗号切割,结果有效                String str="aaa.bbb.ccc.ddd";  //将逗号改成了点,也就是".",结果确什么都没有, 有没有人知道是什么原因?                //String[] arr=str.split(",");
                String[] arr=str.split(".");
                for (String s:arr)
                {
                        System.out.println(s);
                }               
        }
}

评分

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

查看全部评分

4 个回复

倒序浏览
本帖最后由 李敬 于 2012-8-10 03:23 编辑

先看帮助文档

String[] split(String regex)
          根据给定正则表达式的匹配拆分此字符串。

split是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特殊意义的,使用时需要转义,这 15 个字符分别是:
(    [     {    \    ^    -    $     **    }    ]    )    ?    *    +    .

正则表达式中表述上述字符,需要在前面加上“\”,但是“\”是 Java 中的特殊字符,在 Java 代码中用“\\”表示正则表达式中的“\”

“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
只要将
String[] arr=str.split(".");
改成
String[] arr= str.split("\\.");
就可以了。

评分

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

查看全部评分

回复 使用道具 举报
点 在正则表达式中有特殊意义,所以不能直接切割。
需要使用转义字符"\.",但是转义字符在正则表达式中仍然有特殊意义,
所以要用两次即" \\."
回复 使用道具 举报
. 表示任意字符,如果想按照.切割请使用\\.
回复 使用道具 举报
正则表达式?原来如此,还没学到这里,不过用\\.试了下确实是可以,谢谢了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马