在java中拆分字符串首先生成空元素
我试图在多个或单个出现的“O”上分割一个刺,所有其他字符都将是点。我想知道为什么这会首先产生一个空字符串在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"
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("\\.+");