105

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

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

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

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

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

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

谢谢

4

4 回答 4

149

这种行为在String.split(String regex)(强调我的)中有明确记录:

此方法的工作方式就像通过使用给定表达式和零限制参数调用双参数拆分方法一样。因此,尾随的空字符串不包含在结果数组中。

如果您希望包含那些尾随的空字符串,则需要对String.split(String regex, int limit)第二个参数 ( ) 使用负值limit

String[] array = values.split("\\|", -1);
于 2013-01-19T13:00:21.170 回答
26

试试这个

String[] array = values.split("\\|",-1); 
于 2013-01-19T13:00:47.287 回答
13

考虑这个例子:

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

于 2014-10-03T15:14:25.963 回答
1

这是意料之中的。有关. _ _split

Splits this string around matches of the given regular expression.

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

于 2013-01-19T12:58:28.283 回答