写程序的时候遇到一个关于split方法的问题,不知道是怎么弄的,请教各位大虾。
程序大致是这样的:
ArrayList al = new ArrayList();
al.add("D:\xxx\xxx\abc");
al.add("E:\xxx\xxx\abc");
.
.
.
for(int i=0;i<al.size();i++){
  String temp=(String)al.get(i);
  String[] depart=temp.split("\");
  System.Out.Println("xxx-------->"+depart[2]); 
}大致就是这样,报了一个数组越界的错误,我知道和正则表达式有关,但是这个地方实在不知道应该怎么表示,我换成"\\"也没有作用
所以请教一下这里的大虾们,万分感谢

解决方案 »

  1.   

    temp.split("\"); 改成temp.split("\\\\");
      

  2.   

    for 循环内部 很乱 
    初始化 temp depart[]  最好在循环外
      

  3.   

    改成System.Out.Println("xxx-------->"+depart[1]);试试
      

  4.   

    al.add("D:\xxx\xxx\abc");
    al.add("E:\xxx\xxx\abc");
    这种写法java中\要进行转义,应该为\\,像2楼说的那样 temp.split("\"); 改成temp.split("\\\\");正解!
      

  5.   

    ArrayList al = new ArrayList(); 
    al.add("D:\\xxx\\xxx\\abc"); 
    al.add("E:\\xxx\\xxx\\abc"); 
    for(int i=0;i <al.size();i++){ 
      String temp=(String)al.get(i); 
      String[] depart=temp.split("\\\\"); 
      System.out.println("xxx-------->"+depart[2]);
    }
    根据楼上几位说的来整理的,这样写能正常运行,,但是temp.split("\\\\");里面为什么是4个\就不清楚为什么了,,麻烦楼下的详解下,谢谢
      

  6.   

    split 里面是正则表达式 同意1楼
      

  7.   


    split里面是正则,语法规定如果要输入普通斜线,就是("\\\\");
      

  8.   

    split里面是正则表达式。\\\\,java解析为\\交给正则表达式,正则表达式再经过一次转换,把\\转换成为\。也就是java里面要用正则来表示一个\,必须写成4个\。
      

  9.   

    1、al.add("D:\xxx\xxx\abc"); 你这样写能编译?在ide里没有红线?
    2、用java写程序,在任何情况下都不能用“\”或“/”表示路径分隔符!!应该用File.pathSeparator表示,这样即没有编码问题,又能保持平台无关性。
      

  10.   

    在java中\是特殊字符 ,是一个转译字符
    倘若我们要表示一个字符为\那么我们必须要使用两个\\
      

  11.   


    String.split(String regex) 
    根据给定的正则表达式的匹配来拆分此字符串。正则表达式\\代表一个\
      

  12.   

    java中\要进行转义,特殊符号
      

  13.   

    1、楼主的代码编译不过;
    2、for语句中使用al.size()作为条件判断,至少会降低5倍以上的性能;
    3、建议给List加上类型参数,如:List<String> al = new ArrayList<String>(); 
      

  14.   

    数组越界就是你要输出的值,超出了数组的范围。ArrayList al = new ArrayList(); 
       al.add("D:\\xxx\\xxx\\abc"); 
       al.add("E:\\xxx\\xxx\\abc"); 
       for(int i=0;i <al.size();i++){ 
         String temp=(String)al.get(i); 
         String[] depart=temp.split("\\\\"); 
         System.out.println("xxx-------->"+depart[2]); 
       } 
      

  15.   

    把你的代码改成这样就可以了!
    因为"\"是转移字符, “\\"才代表一个斜杠ArrayList<String> al = new ArrayList<String>();
    al.add("D:\\xxx\\xxx\\abc");
    al.add("E:\\xxx\\xxx\\abc");

    for(int i=0;i <al.size();i++){
      String temp=(String)al.get(i);
      String[] depart=temp.split("\\\\");
      System.out.println("xxx-------->"+depart[2]);
      

  16.   

    因为 "\"是特殊字符,比如"\n" "\t" "\012"等是有特殊意义的.并不是表示的"\"
    而要表示一个"\"需要用"\\"String text = new String("Hell\\o");
    其实是输出是Hello\o因为正则表达式要跟 实际上是 一个 "\" 跟上一个其他参数 
    所以需要而这里要输出"\"所以也需要用"\\" 正则表达式里面都是使用"\\"加上参数来表示 数字  空格 字符等
    比如
     split("\\d")表示的一个数字.
    String text = new String("j2He5ll\\2\\o");
    String[] text1 ;
    text1 = text.split("\\d");
    for(String s: text1)
    System.out.println(s);
    输出为:j
    He
    ll\
    \o
    所以前面这个"\\"是正则表达式需要的.而后面这个两个"\\"才表示一个 \
    String text = new String("j2He5ll\\2\\o");
    String[] text1 ;
    text1 = text.split("\\\\");//一共四个撒.前面两个是正则表达式的格式,后面两个才表示要//输出一个\
    for(String s: text1)
    System.out.println(s);输出为:
    j2He5ll
    2
    o
      

  17.   

    学习来的PS: 
    我的目标是 ----> ^_^
      

  18.   

    http://topic.csdn.net/u/20081108/10/eb0e345e-b041-4148-889a-f9a08c777936.html 
    开始说得有些错误  这里讲得很好...