2013-01-19 171 views
74

我需要关于split()方法的帮助。 我有以下String将Java拆分为字符串

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

我需要把这些值到一个数组。有三种可能的字符串:“0”,“1”和“”

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

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

我的价值观只保存,直到最后似乎0像部分“|||”被修剪。 我在做什么错?

谢谢

回答

115

此行为在String.split(String regex)(重点煤矿)被明确记载:

此方法仿佛通过与给定表达式和为零的限制参数调用两个参数分割方法。 尾随的空字符串因此是不包括在结果数组中。

如果你想那些尾随空字符串包含,你需要使用String.split(String regex, int limit)与负值的第二个参数(limit):

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

谢谢,那正是我需要的。 String array [] = myValues.split(“\\ |”,-1); – Dusan

1

这是预期的。 对于split,请参阅Javadocs

Splits this string around matches of the given regular expression. 

此方法仿佛通过与给定表达式和为零的限制参数调用两个参数的分裂(java.lang.String中,int)方法。 因此尾随的空字符串不包含在结果数组中。

23

试试这个

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

考虑这个例如:

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