2014-06-11 69 views
4

我試圖分裂與「\」,但它不是爲我工作,該字符串包含字母數字數據和一些日本人角色..的分裂與「」的字符串的Android

這裏一個串是碼我試圖

String [] folder = null; 
String [] files= null; 
for (int i =0; i<listFile_Names.size();i++) 
{ 

String filesList = listFile_Names.get(i); 
filesList = filesList.substring(1); 
Log.v("Fullpath",filesList); 
try{ 
String[] parts = filesList.split("\\"); 
folder[i] = parts[0]; 
files[i] = parts[1]; 
} 
catch(Exception e){ 
e.printStackTrace(); 

} 
} 
for(int j=0; j< folder.length; j++) 
{ 
Log.v("Folders", folder[j].toString()); 
Log.v("Files", files[j].toString()); 

} 

這裏是logcat的說

06-11 11:19:03.300: V/Fullpath(14600): A40-002(D155AX-8_DUAL仕様チェックシート)\sheet001.html 
06-11 11:19:03.300: W/System.err(14600): java.util.regex.PatternSyntaxException: Unrecognized backslash escape sequence in pattern near index 1: 
06-11 11:19:03.300: W/System.err(14600): \ 
06-11 11:19:03.300: W/System.err(14600):^
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compileImpl(Native Method) 
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compile(Pattern.java:400) 
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.<init>(Pattern.java:383) 
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compile(Pattern.java:374) 
06-11 11:19:03.300: W/System.err(14600): at java.lang.String.split(String.java:1842) 
06-11 11:19:03.300: W/System.err(14600): at java.lang.String.split(String.java:1823) 
06-11 11:19:03.300: W/System.err(14600): at jp.co.komatsu.android.xlez.webservice.AsynTaskGetUpdatedFiles.doInBackground(AsynTaskGetUpdatedFiles.java:202) 
+0

逃避它

+1

我相信你需要做4個反斜線,你試圖代表需要進行轉義2中的每一個。 – Aniruddha

回答

10

由於反斜槓在正則表達式的特殊含義你必須轉義兩次:

String[] parts = filesList.split("\\\\"); 

這是因爲Java解釋字符串文字\\\。你可以很容易地看到這個執行此代碼:

String s = "123\\"; 
System.out.println(s); // Output: 123\ 
+0

謝謝你解釋得很好的答案:) –

1

filesList.split("\\");

應該

filesList.split("\\\\");

+0

應該是filesList.split(「\\\\」); RYT? –

+0

我收到了一個錯誤消息(Java 7):*字符串文字沒有通過雙引號* – Christian

+0

@NithinCVpoyyil正確關閉。是啊...對不起。錯字錯誤。 –

0

下面將讓你文件名

int idx = filesList.replaceAll("\\", "/").lastIndexOf("/"); 
String fileNameWithExtn = idx >= 0 ? filesList.substring(idx + 1) : fileName; 

要刪除文件E xtension並獲得唯一文件路徑,同樣

idx = fileNameWithExtn .lastIndexOf("."); 
String filename = idx >= 0 ? fileNameWithExtn.substring(0,idx) : fileNameWithExtn ; 
0

與模式嘗試,

String[] input = { "320/10.50/Dec 11 2002/39.95", 
     "110-4.25-Dec 15 2002-39.95", 
     "8%54.00%Dec 4 2002%0" }; 

    public SplitData() { 
     for (int i = 0; i < input.length; i++) { 
      String[] piece = input[i].split("[-/%]"); 
      for (int j = 0; j < piece.length; j++) 
       System.out.print(piece[j] + "\t"); 
      System.out.print("\n"); 
     } 
2

我相信你需要做4個反斜槓,2個的每一個你正在試圖代表需要被逃過一劫。

String[] arrA = str.split("\\\\"); 
0

如果你只想替換一個反斜槓,試試這個。

String url = "http://192.168.1.5:8080\smth"; 
if (url .contains("\\")){ 
    url = url .replaceAll("\\\\", "/"); 
}