如何拆分此字符串

时间:2013-04-24 16:21:21

标签: java string split

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

3 个答案:

答案 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());