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