黑马程序员技术交流社区

标题: 请大神给知道一下 [打印本页]

作者: 秦_奋    时间: 2014-12-9 18:53
标题: 请大神给知道一下
为什么在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]);
}
}


作者: xingyunjunjun    时间: 2014-12-9 19:03
arr可能为空
作者: 曛丨黯淡浮华    时间: 2014-12-9 19:07
本帖最后由 曛丨黯淡浮华 于 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. }
复制代码




作者: 有陷阱快跑丶    时间: 2014-12-9 19:07
正则表达式的问题 , .在正则中表示任意字符。"\\."就好了  没记错的话:)
作者: 王小忠    时间: 2014-12-9 19:19
你要分割 "." 的话,应该这样分才对String[] arr = str.split("[.]");如果你写成 String[] arr=str.split(".")的话,在split方法体内就会造成歧义,以至于不能正确分割出来,得到的数组长度就会是零~~所以才会报空指针异常
作者: 秦_奋    时间: 2014-12-9 20:20
非常谢谢你:)

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

      
作者: 奋斗的蜗牛ksd    时间: 2014-12-9 22:31
[ ]是正则表达式的一些规则,具体查阅api,里面有




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2