软考
APP下载

java字符串转二维数组

在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 > list = new ArrayList >();

Pattern pattern = Pattern.compile("(\\d+)");

Matcher matcher = pattern.matcher(str);

while(matcher.find()){

ArrayList temp = new 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用来保存转换后的结果。接下来使用双重循环,将每个元素转换为整数类型后存储到对应位置即可。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库