2013-04-24 49 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()); 
    } 
}