观众敌人们大家好,这里是小码看世界。
Java 的 String.split()办法置信大家都很不会很生疏,近日,中国一互联网码农小哥在应用 Java String.split()办法时,遇到了一个神奇的问题,这到底是怎么回事呢,咱们一起来看一看吧~
这位小哥写了一个 String 转 char[][]的办法,其中须要应用 split 办法来宰割每个 char[]与每个 char[][]:
public static char[][] create2DCharArray(String arrayContent, String itemSplit, String lineSplit) {String newArrayContent = arrayContent.trim();
String[] rows = newArrayContent.split(lineSplit);
if (rows.length > 0) {String[] items = rows[0].split(itemSplit);
char[][] result = new char[rows.length][items.length];
for (int i = 0; i < items.length; i++) {result[0][i] = items[i].charAt(0);
}
for (int i = 1, lengthI = rows.length; i < lengthI; i++) {items = rows[i].split(itemSplit);
for (int j = 0, lengthJ = items.length; j < lengthJ; j++) {result[i][j] = items[j].charAt(0);
}
}
return result;
} else {return new char[][]{};
}
}
只见这位小哥在应用该办法的时候是这样传参的,他打算应用 ”|” 来辨别每个一维数组元素,用 ”,” 来辨别每个二位数组元素:
public static void main(String[] args) {char[][] matrix = CreateTools.create2DCharArray("1,0,1,0,0|1,0,1,1,1|1,1,1,1,1|1,0,0,1,0", ",", "|");
PrintTools.print(matrix);
}
然而输入的后果却令他感到十分诧异,本应该生成的二维数组的每个元素居然是给定的字符串 "1,0,1,0,0|1,0,1,1,1|1,1,1,1,1|1,0,0,1,0"
中的每个字符!:
于是小哥网上查找了一下 split 办法所须要留神的问题,依照这篇文章所说 https://blog.csdn.net/cccmercy/article/details/79058686
- Java 中,按某个字符宰割字符串应用的是 String 对象的
split()
办法,返回的是宰割之后的 String 数组,值得注意的是宰割符。当宰割符是.
或者是|
时,必须应用\\
进行本义。- 没有加本义符按 . 宰割字符串,返回值是一个空的长度为 0 的 String 数组
- 没有加本义符按
|
宰割字符串,返回值是一个 长度为原字符串长度的 String 数组,它会截取字符串中每一个字符并放到 String 数组中
小哥,依据文章中的办法进行了批改,果然获取到的想要的格局:
public static void main(String[] args) {char[][] matrix = CreateTools.create2DCharArray("1,0,1,0,0|1,0,1,1,1|1,1,1,1,1|1,0,0,1,0", ",", "\\|");
PrintTools.print(matrix);
}
好了,以上就是小码看世界的全部内容了,如果喜爱的话就点个关注,有什么想与小码交换的,请在评论区留言。咱们下期再见~
哈哈哈哈哈哈哈哈哈哈,我编不上来了