2013-01-19 168 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