在Java编程过程中,经常需要进行字符串操作和数组操作。有时候,需要将一个字符串转换成一个二维数组。本文将从多个角度分析如何将Java字符串转换成二维数组,并且提供一些示例代码。
使用split方法将字符串转换成一维数组
Java中,String类提供了一个非常方便的方法split()来将字符串拆分为一个数组。假设有一个包含逗号分隔符的字符串"1,2,3;4,5,6",我们可以使用以下代码将它转换为一个一维数组:
```java
String str = "1,2,3;4,5,6";
String[] arr = str.split(";");
```
在这段代码中,我们使用了split()方法将字符串按照分号分割成两个字符串,即将"1,2,3;4,5,6"转换为了["1,2,3", "4,5,6"],分号作为分隔符的参数传递给了split()的方法。
接下来,我们可以使用嵌套for循环,将每个分号分割的字符串再使用逗号分隔符转换成数组元素,从而生成一个二维数组。
```java
int row = arr.length;
int col = arr[0].split(",").length;
int[][] doubleArr = new int[row][col];
for(int i = 0; i < row; i++){
String[] temp = arr[i].split(",");
for(int j = 0; j < col; j++){
doubleArr[i][j] = Integer.parseInt(temp[j]);
}
}
```
在这段代码中,我们首先用arr.length获取了分好后的字符串数组的长度,也就是二维数组的行数,使用arr[0].split(",").length获取了二维数组每行的列数,然后定义一个二维数组doubleArr用来存储转换后的结果。接下来使用双重嵌套循环,将每个元素转换成整数类型后存到对应位置即可。
使用Pattern和Matcher类将字符串转换成二维数组
除了使用split方法,我们还可以使用Pattern和Matcher类将字符串转换为二维数组。
```java
String str = "1,2,3;4,5,6";
List
Pattern pattern = Pattern.compile("(\\d+)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
ArrayList
temp.add(Integer.parseInt(matcher.group().trim()));
if(matcher.end() == str.length() || str.charAt(matcher.end()) == ';'){
list.add(temp);
}
}
int row = list.size();
int col = list.get(0).size();
int[][] doubleArr = new int[row][col];
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
doubleArr[i][j] = list.get(i).get(j);
}
}
```
在这段代码中,我们首先定义了一个ArrayList类型的list,然后使用Pattern和Matcher类来匹配字符串中的数字。如果遇到分号或者字符串结束,就将数字存到list中。接下来获取list的长度以及每个子列表的长度,定义一个二维数组用来存储结果,然后使用双重for循环读取list中的元素存储到对应位置即可。
使用StringTokenizer将字符串转换成二维数组
除了上面两种方法,我们还可以使用StringTokenizer类将一个字符串转换成二维数组。
```java
String str = "1,2,3;4,5,6";
int row = 0;
int col = 0;
StringTokenizer st = new StringTokenizer(str, ";");
while(st.hasMoreTokens()){
row++;
StringTokenizer st2 = new StringTokenizer(st.nextToken(), ",");
while(st2.hasMoreTokens()){
col++;
}
}
int[][] doubleArr = new int[row][col/row];
st = new StringTokenizer(str, ";");
int i = 0, j = 0;
while(st.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st.nextToken(), ",");
while(st2.hasMoreTokens()){
doubleArr[i][j++] = Integer.parseInt(st2.nextToken());
}
i++;
j = 0;
}
```
在这段代码中,我们首先使用StringTokenizer类将字符串中的分隔符进行分割,并且根据分好后的结果得到二维数组的大小,然后定义一个二维数组doubleArr用来保存转换后的结果。接下来使用双重循环,将每个元素转换为整数类型后存储到对应位置即可。
微信扫一扫,领取最新备考资料