观众朋友们大家好,这里是小码看世界。
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);
}
好了,以上就是小码看世界的全部内容了,如果喜欢的话就点个关注,有什么想与小码交流的,请在评论区留言。我们下期再见~
哈哈哈哈哈哈哈哈哈哈,我编不下去了