Java将字符串拆分为数组

时间:2013-01-19 12:54:18

标签: java string split

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

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

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

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

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

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

感谢

4 个答案:

答案 0 :(得分:127)

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

  

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

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

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

答案 1 :(得分:25)

试试这个

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

答案 2 :(得分:8)

考虑这个例子:

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

答案 3 :(得分:1)

这是预期的。 有关split的信息,请参阅Javadocs

Splits this string around matches of the given regular expression.

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