2013-04-24 40 views
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

+2

我可以知道分裂的原因。我们可以得到如下所示的文件名imageLoc.substring(imageLoc.lastIndexOf(“\\”)+ 1,imageLoc.length()); – VKPRO 2013-04-24 17:03:56

+0

同意。它可以更简单。你不需要最后一个参数:'imageLoc = imageLoc.substring(imageLoc.lastIndexOf(“\\”)+ 1);' – 2013-04-24 17:08:52

+0

悲伤的熊猫在视图层做这件事。 – 2013-04-24 17:10:37

回答

0

你需要逃避与另一个反斜杠反斜杠:"_Folder43\\"。然而,由于String.split()需要一个正则表达式,你也有逃脱导致反斜线在正则表达式:String[] tokens = imageLoc.split("_Folder43\\\\");

+0

这工作,谢谢 – Sahil 2013-04-25 08:11:24

+0

没问题。如果你还没有,我会建议考虑rob的建议。使用File API似乎是提供的代码更好的解决方案。 – 2013-04-25 10:48:47

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()); 
+1

'imageLoc.substring(imageLoc.lastIndexOf(“/”)+ 1);'较短,它会包含所有文本直到字符串结束 – Alex 2013-04-24 17:30:31

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()); 
    } 
}