2012-09-29 55 views
1

我想拆分此字符串的Java轉換的特殊字符串數組

['1','BR_1142','12,345','01-02-2012', 'Test 1'],['2','BR_1142','12,345','01-02-2012', 'Test 2'] 

的陣列要陣列串的Java中的數組?

我可以用正則表達式來做還是應該寫一個遞歸函數來處理這個目的?

+0

爲什麼要使用正則表達式,如果你可以用簡單的'split'做到這一點? –

+0

預期產量是多少? – MadProgrammer

+0

我想有一個數組的數組,例如這個字符串數組[1] [2]應該給我BR_1142。我不知道我怎樣才能做到這一點?感謝您的幫助 – AKZ

回答

2

如何像下面

String str= "['1','BR_1142','12,345','01-02-2012', 'Test 1'],['2','BR_1142','12,345','01-02-2012', 'Test 2']"; 

String[] arr = str.split("\\],\\["); 
String[][] arrOfArr = new String[arr.length][]; 
for (int i = 0; i < arr.length; i++) { 
    arrOfArr[i] = arr[i].replace("[", "").replace("]", "").split(","); 
} 
+0

當我使用「,」分裂考慮12,345。我不想考慮12,345! – AKZ

+0

@AKZ,你是對的。你可以嘗試'split(「','」)'雖然這也會刪除字符。我相信你可以從那裏找到一種方法。 –

0
String yourString = "['1','BR_1142','12,345','01-02-2012', 'Test 1'],['2','BR_1142','12.345','01-02-2012', 'Test 2']"; 
yourString = yourString.substring(1, yourString.lastIndexOf("]")); 
String[] arr = yourString.split("\\],\\["); 

String[][] arr1 = new String[arr.length][]; 
int i = 0; 
String regex = "(?<=['],)"; // This regex will do what you want.. 
for(String a : arr) { 
    arr1[i++] = a.split(regex); 
} 

for (String[] arrasd: arr1) { 
    for (String s: arrasd) { 
     System.out.println(s.replace(",", "")); 
    } 
} 
+0

當我使用「,」分裂考慮12,345。我不想考慮12,345! – AKZ

+0

@AKZ ..編輯上面的代碼..試試吧.. –

+0

@AKZ ..另外,如果你試圖在上面的過程中保留'12,345'之間的',',你會失去另一個'''..所以,我用「」替換它們以完全刪除它們。 –

0

你可以結合使用String.split和正則表達式look-behind

String str = "['1','BR_1142','12,345','01-02-2012', 'Test 1'],['2','BR_1142','12,345','01-02-2012', 'Test 2']"; 
String[] outerStrings = str.split("(?<=]),"); 
String[][] arrayOfArray = new String[outerStrings.length][]; 

for (int i=0; i < outerStrings.length; i++) { 
    String noBrackets = outerStrings[i].substring(1, outerStrings[i].length() - 1); 
    arrayOfArray[i] = noBrackets.split(","); 
}