2011-03-19 119 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