代码之家  ›  专栏  ›  技术社区  ›  A. Larsson

Java中的拆分字符串首先产生空元素

  •  2
  • A. Larsson  · 技术社区  · 6 年前

    我试着对多次或一次出现的“O”进行拆分,所有其他字符都是圆点。我想知道为什么这会先产生一个空字符串。

    String row = ".....O.O.O"
    String[] arr = row.split("\\.+");
    

    这就产生了:

    ["", "O", "O", "O"]
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Sweeper    6 年前

    您只需要确保删除任何尾随或前导点。

    因此,一个解决方案是:

    row.replaceAll("^\\.+|\\.+$", "").split("\\.+");
    
        2
  •  1
  •   Danila Zharenkov    6 年前

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

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

    输出将为

    ["O","O","O"]
    
        3
  •  1
  •   michjnich    6 年前

    “+”字符正在删除分隔符的多个实例,因此拆分的实质是在“”上拆分以下字符串。

    .0.0.0.
    

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

    要避免这种情况,请在拆分字符串之前将所有前导分隔符从字符串中剥离。这里是一个包含一些建议的线程,而不是键入一些关于如何执行此操作的示例。

    Java - Trim leading or trailing characters from a string?