2011-03-19 218 views
1

我有一個字符串:字符串分割到矩陣陣列

1,3,4,5, 
1,4,5,0, 
2,5,3,8, 

即我想在一個變量矩陣(int[][])來存儲。什麼是完成這個最好的方法?我應該使用String類的方法嗎?或者我應該使用Regex

回答

6

首先(通過String.split(..)split on newline,然後將結果數組中的每個項的項分成,。然後分析每個使用Integer.parseInt(..)

2
String input = "1,3,4,5,\n1,4,5,0,\n2,5,3,8,"; 

String[] str1 = input.split("\n"); 
int[][] matrix = new int[str1.length][]; 
for (int i = 0; i < matrix.length; i++) { 
    String[] str2 = str1[i].split(","); 
    matrix[i] = new int[str2.length]; 
    for (int j = 0; j < matrix[i].length; j++) { 
     matrix[i][j] = Integer.parseInt(str2[j]); 
    } 
} 
+2

'StringTokenizer'是事實上的棄用:「我們建議任何尋求此功能使用字符串的split方法或java.util.regex包來代替。」 – Bozho 2011-03-20 00:02:57

+0

嗯,有趣的是,JavaDoc實際上現在建議,沒有意識到這一點。儘可能避免正則表達式似乎是最好的。同樣,StringTokenizer在這種情況下(10k次迭代)速度提高了3倍,並且創建的對象更少,但可能無關緊要。 – WhiteFang34 2011-03-20 00:13:29

+0

建議使用'String.split()'代替'StringTokenizer'。 – WhiteFang34 2011-03-20 09:56:13