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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦_奋 中级黑马   /  2014-12-9 18:53  /  1510 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在String的split中不能用“.”分割
会出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at DemoTest.main(DemoTest.java:7)
谁能给解释一下这是为什么,


class DemoTest
{
public static void main(String[] args)
{
  String str="nihaoheima.txt";
  String[] arr=str.split(".");
  System.out.println(arr[0]);
}
}

6 个回复

倒序浏览
arr可能为空
回复 使用道具 举报
本帖最后由 曛丨黯淡浮华 于 2014-12-9 19:08 编辑

因为点是特殊的符号,所以转换为空,

你可以转义下, \\.
  1. import java.util.*;

  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.           String str = "ni.hao.hei.ma.txt";

  7.           String[] arr = new String[100];
  8.                   
  9.           arr = str.split("\\.");

  10.           System.out.println(Arrays.toString(arr));
  11.         }
  12. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
船长 + 1 赞一个!

查看全部评分

回复 使用道具 举报
正则表达式的问题 , .在正则中表示任意字符。"\\."就好了  没记错的话:)
回复 使用道具 举报
你要分割 "." 的话,应该这样分才对String[] arr = str.split("[.]");如果你写成 String[] arr=str.split(".")的话,在split方法体内就会造成歧义,以至于不能正确分割出来,得到的数组长度就会是零~~所以才会报空指针异常
回复 使用道具 举报
非常谢谢你:)

为什么要String[] arr = str.split("[.]");这么写呢?这是一个特例吗?给给详细讲一下吗

      
回复 使用道具 举报
[ ]是正则表达式的一些规则,具体查阅api,里面有
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马