2012-11-27 195 views
1

不知道我的頭腦是麻木還是我只是愚蠢的,但由於某種原因,這背後的邏輯逃脫了我。基本上在Android應用程序中,我通過PHP腳本來提取CSV信息。該信息獲取顯示像拆分一個字符串兩次

value00,value01,value02,value03,value04;value10,value11,value12,value13,value14;value20, etc... 

現在我想建立一個二維陣列,其中thisArray [0] [0] = value00,thisArray [1] [1] = value11,thisArray [1] [4] = value14等。我的代碼將被「;」分割。但我無法弄清楚如何將該數組拆分成我想要的兩維數組。這是我有:(httpMessage是包含上述信息的字符串)

    String[][] secondSplit;// 
      String[] firstSplit;// 
      String currvalue;// 

      firstSplit = httpMessage.split(";"); 
      for(int i=0; i<firstSplit.length; i++) { 
       Log.d("EFFs" + Integer.toString(i),firstSplit[i]); 
      } 

的logcat示出所期望的行爲,EFFs0 =行1,EFFs1 =行2,只是我想要的方式。但現在,我如何獲得第二個維度?另外,因爲我100%肯定這是一個愚蠢的問題,我會拋出一個簡單的答案,有沒有簡單的方法來判斷一個字符串是一個數字?

回答

7

你可以做到以下幾點:

secondSplit = new String[firstSplit.length][]; 
for(int i=0; i<firstSplit.length; i++){ 
secondSplit[i] = firstSplit[i].split(","); 
} 

相當肯定會工作。讓我知道如果它不是!希望有所幫助!

+0

+1,因爲你是第一:) – Alex

+0

+1因爲我很慢。 ;) –

+0

你不能同時在任何地方;) – Alex

2

如果你知道有多少行和列有您可以使用Scanner類這樣的(近日瞭解到這個來自this answer):

Scanner sc = new Scanner(input).useDelimiter("[,;]"); 
final int M = 5; 
final int N = 2; 
String[][] matrix = new String[M][N]; 
for (int r = 0; r < M; r++) { 
    for (int c = 0; c < N; c++) { 
    matrix[r][c] = sc.next(); 
    } 
} 

//Just to see that it worked  
for(String[] row : matrix) { 
    for(String col : row) { 
    System.out.print(col+","); 
    } 
    System.out.println(); 
} 
+0

謝謝你的回答。另一種方式是更容易,更便攜的地方,但我很欣賞另一個選項的教訓:) –