我有以下字符串,我需要按"_Folder43\"
拆分,以便我只得到数组第二个元素中的图像名称。
E:\generated\_Folder43\image4565.jpg
到目前为止,我有以下代码
String[] tokens = imageLoc.split("_Folder43\"); //backslash escapes the double quotes!
imageLoc = tokens[1];
System.out.println(imageLoc);
上面代码中的第一行是问题所在,因为那里的反斜杠会转义双引号,因此不允许结束字符串。
必需输出 image4565.jpg
答案 0 :(得分:3)
不要使用字符串操作来处理文件路径。
如果您使用的是Java 6或更早版本,请改用File API:
package com.example.file;
import java.io.File;
public class FileExample2 {
/**
* @param args
*/
public static void main(String[] args) {
String path = "E:\\generated\\_Folder43\\image4565.jpg";
File f = new File(path);
System.out.println(f.getName());
}
}
如果您使用的是Java 7或更高版本,请使用Path API。不幸的是,我没有Java 7方便测试它,但我认为它会像这样(如果有错误,请随时纠正我):
public class PathExample {
/**
* @param args
*/
public static void main(String[] args) {
String path = "E:\\generated\\_Folder43\\image4565.jpg";
Path p = Paths.get(path);
System.out.println(p.getFileName().toString());
}
}
答案 1 :(得分:0)
您需要使用另一个反斜杠来转义反斜杠:"_Folder43\\"
。但是,由于String.split()
采用正则表达式,您还必须在正则表达式中转义结果反斜杠:String[] tokens = imageLoc.split("_Folder43\\\\");
答案 2 :(得分:0)
而不是拆分使用子串,如下所示。
String imageLoc ="E:\\generated\\_Folder43\\image4565.jpg";
imageLoc = imageLoc.substring(imageLoc.lastIndexOf("\\")+1,imageLoc.length());
System.out.println(imageLoc);
or
String imageLoc ="E:/generated/_Folder43/image4565.jpg";
imageLoc = imageLoc.substring(imageLoc.lastIndexOf("/")+1,imageLoc.length());