Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中拆分字符串首先生成空元素_Java_Regex_Split - Fatal编程技术网

在java中拆分字符串首先生成空元素

在java中拆分字符串首先生成空元素,java,regex,split,Java,Regex,Split,我试图在多个或单个出现的“O”上分割一个刺,所有其他字符都将是点。我想知道为什么这会首先产生一个空字符串 String row = ".....O.O.O" String[] arr = row.split("\\.+"); 这将产生: ["", "O", "O", "O"] 对于此模式,可以使用replaceFirstMethod(),然后按点分割 String[] arr = row.replaceFirst("\\.+","").split("\\."); 输出将是 ["O","O"

我试图在多个或单个出现的“O”上分割一个刺,所有其他字符都将是点。我想知道为什么这会首先产生一个空字符串

String row = ".....O.O.O"
String[] arr = row.split("\\.+");
这将产生:

["", "O", "O", "O"]

对于此模式,可以使用replaceFirstMethod(),然后按点分割

String[] arr = row.replaceFirst("\\.+","").split("\\.");
输出将是

["O","O","O"]
“+”字符将删除分隔符的多个实例,因此拆分的实质是在“.”上拆分以下字符串

当然,这意味着您的第一个字段是空的。因此你得到的结果

为了避免这种情况,请在拆分字符串之前从字符串中剥离所有前导分隔符。这里不是输入一些关于如何实现这一点的示例,而是一个带有一些建议的线程


您只需确保删除任何尾随点或前导点即可

因此,一个解决方案是:

row.replaceAll("^\\.+|\\.+$", "").split("\\.+");

执行strip,然后拆分
row.replaceFirst(\\\.+)。拆分(\\.+)
replaceFirst方法需要两个参数。。它应该是row.replaceFirst(“\\.+”,“”)。split(“\\.+”)实际上,尾随的点不会出现同样的问题。可能是因为最后一个分隔符被视为标记字段的结束,而不是另一个字段的开始。如果没有+的话,你会在结尾得到空字段,但是有了它,你只需要去掉前导的分隔符。如果字符串以“O”开头,这会合并前两个出现。
row.replaceAll("^\\.+|\\.+$", "").split("\\.+");