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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© strawberry2013 中级黑马   /  2013-5-11 22:24  /  1607 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 strawberry2013 于 2013-5-11 22:37 编辑

class Demo
{
   public static void main(String[] args)
   {
      String p = "asasd.adas.txt.rmvb";
      String[] s = p.split(".");
      System.out.println(s.length);
   }
}

居然分割得到的s数组长度为 0,,,即没有分割成功!
而是用字母分割,成功!可是 点号也不是 转义字符!求解!!!

总之,目的就是为了获得字符串最后一个点号后面所跟的字符串,即得到扩展名!不知道大家有什么好的思路~~谢谢!!!!

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

8 个回复

倒序浏览
eycrckag 来自手机 中级黑马 2013-5-11 22:28:58
沙发
.是所有的意思。在正泽表达式里面,你的问题就在这里。你的任意。java就疯啦
回复 使用道具 举报
eycrckag 来自手机 中级黑马 2013-5-11 22:29:09
藤椅
.是所有的意思。在正泽表达式里面,你的问题就在这里。你的任意。java就疯啦
回复 使用道具 举报
eycrckag 来自手机 中级黑马 2013-5-11 22:33:10
板凳
打开api文档,看下Pattern类。里面有
回复 使用道具 举报
split()方法接收一个正则表达式作为参数,
"." 表示任何字符,可以参看jdk文档中正则表达式部分
可以这样写:
  1. class Demo
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.       String p = "asasd.adas.txt.rmvb";
  6.       String[] s = p.split("[.]");
  7.       System.out.println(s.length);
  8.    }
  9. }
复制代码
用  "[]"  将 "." 括起来即可
回复 使用道具 举报
谢谢各位!
回复 使用道具 举报
  1. class Demo
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.       String p = "asd.dsf.txt.rmvb";
  6.       String[] s = p.split("\\.");  //split(String regx),里面是正则表达式,而".",在正则表达式中标示任意字符,所以要加上\\转移字符

  7.       System.out.println(s.length);
  8.    }
  9. }
复制代码
回复 使用道具 举报
本帖最后由 zms2100 于 2013-5-11 22:43 编辑

不好意思,LZ,这个"."刚好是个特殊字符,呵呵,代表任意字符(a-zA-Z等等),所以要切割点需要这样定义 "\\."(第二个\是用来转义".",第一个\是用来转义第二个\,应该懂了吧),另外反正我是没打印出数据(开头的时候),O(∩_∩)O~。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马