Java将字符串拆分为数组

这个问题在这里已有答案:

  • Java String拆分删除了空值                                     6个答案

我需要split()方法的帮助。我有以下String

String values = "0|0|0|1|||0|1|0|||";

我需要将值放入数组中。 有3种可能的字符串:“0”,“1”和“”

我的问题是,当我尝试使用split()

String[] array = values.split("\\|"); 

我的值只保存到最后0.看起来像“|||”部分 被修剪。我究竟做错了什么?

谢谢

Dusan asked 2019-09-14T09:53:04Z
4个解决方案
127 votes

这种行为在limit(强调我的)中明确记录:

此方法的作用就像通过调用具有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾的空字符串不包含在结果数组中。

如果您希望包含那些尾随空字符串,则需要使用limit,其中第二个参数为负值(limit):

String[] array = values.split("\\|", -1);
Mark Rotteveel answered 2019-09-14T09:53:33Z
25 votes

试试这个

String[] array = values.split("\\|",-1); 
Lokesh answered 2019-09-14T09:53:52Z
8 votes

考虑这个例子:

public class StringSplit {
  public static void main(String args[]) throws Exception{
    String testString = "Real|How|To|||";
    System.out.println
       (java.util.Arrays.toString(testString.split("\\|")));
    // output : [Real, How, To]
  }
}

结果不包括“|”之间的空字符串 分隔器。 保持空字符串:

public class StringSplit {
  public static void main(String args[]) throws Exception{
    String testString = "Real|How|To|||";
    System.out.println
       (java.util.Arrays.toString(testString.split("\\|", -1)));
    // output : [Real, How, To, , , ]
  }
}

有关详细信息,请访问此网站:[http://www.rgagnon.com/javadetails/java-0438.html]

S. Mayol answered 2019-09-14T09:54:27Z
1 votes

这是预料之中的。有关split的信息,请参阅Javadocs。

Splits this string around matches of the given regular expression.

此方法的工作方式就像通过调用给定表达式和limit参数为零的双参数split(java.lang.String,int)方法一样。 因此,结尾的空字符串不包含在结果数组中。

Srinivas answered 2019-09-14T09:55:04Z
translate from https://stackoverflow.com:/questions/14414582/java-split-string-to-array