写程序的时候遇到一个关于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]);
}大致就是这样,报了一个数组越界的错误,我知道和正则表达式有关,但是这个地方实在不知道应该怎么表示,我换成"\\"也没有作用
所以请教一下这里的大虾们,万分感谢
程序大致是这样的:
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 depart[] 最好在循环外
al.add("E:\xxx\xxx\abc");
这种写法java中\要进行转义,应该为\\,像2楼说的那样 temp.split("\"); 改成temp.split("\\\\");正解!
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个\就不清楚为什么了,,麻烦楼下的详解下,谢谢
split里面是正则,语法规定如果要输入普通斜线,就是("\\\\");
2、用java写程序,在任何情况下都不能用“\”或“/”表示路径分隔符!!应该用File.pathSeparator表示,这样即没有编码问题,又能保持平台无关性。
倘若我们要表示一个字符为\那么我们必须要使用两个\\
String.split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。正则表达式\\代表一个\
2、for语句中使用al.size()作为条件判断,至少会降低5倍以上的性能;
3、建议给List加上类型参数,如:List<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]);
}
因为"\"是转移字符, “\\"才代表一个斜杠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]);
}
而要表示一个"\"需要用"\\"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
我的目标是 ----> ^_^
开始说得有些错误 这里讲得很好...