将Java字符串拆分为数组

107

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

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

我需要将这些值放入一个数组中。有三种可能的字符串: "0", "1" 和 ""。

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

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

我的值只保存到最后一个0。看起来“|||”部分被删除了。我做错了什么吗?

谢谢。

4个回答

155

这种行为在String.split(String regex)中有明确的文档说明(重点在于“not included”):

该方法的工作方式就好像使用给定的表达式和零限制参数调用双参数分割方法一样。 因此,结果数组中不包括末尾空字符串。

如果您想要包含这些末尾的空字符串,则需要使用String.split(String regex, int limit)方法,并将第二个参数(limit)设为负数:

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

6
谢谢,那正是我需要的。 字符串数组[] = myValues.split("\|", -1); - Dusan

26

试一试

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

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


1

这是预期的。 请参考Javadocs中的split

Splits this string around matches of the given regular expression.

该方法的工作方式类似于使用给定表达式和限制参数为零调用两个参数的split(java.lang.String,int)方法。因此,尾随空字符串不包括在结果数组中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接