2012-11-27 148 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

谢谢你的回答。另一种方式是更容易,更便携的地方,但我很欣赏另一个选项的教训:) –