0

我有以下需要拆分的字符串,"_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

4

3 回答 3

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());
    }
}
于 2013-04-24T17:37:13.043 回答
0

您需要使用另一个反斜杠来转义反斜杠:"_Folder43\\". 但是,由于String.split()需要一个正则表达式,您还必须转义正则表达式中产生的反斜杠:String[] tokens = imageLoc.split("_Folder43\\\\");

于 2013-04-24T16:46:25.133 回答
0

而不是 split 使用下面的子字符串。

     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());
于 2013-04-24T17:07:43.727 回答