2015-08-27 33 views
4

假設我想分割這個字符串a^b^c^d^e^^^f^g^h^^^,我只是做string.split("\\^"),它返回一個長度爲10的數組,即[a, b, c, d, e, , , f, g, h]。不過,我想要一個長度爲13的數組,它會在考慮到h之後發生分隔符的出現。正則表達式當兩個分隔符之間沒有任何內容時分割字符串

我可以做這樣的事情,以達到我想要

string = string.replace("^", "^ "); 
    String[] split = string.split("\\^"); 

    for(String x : split){ 
     System.out.println(x.trim()); 
    } 

但這似乎像一個覆蓋層。有沒有一個正則表達式來做到這一點?

+0

你可以簡單地'string.split( 「\\^+」)' – Maroun

+0

@MarounMaroun:'string.split( 「\\^*」)'給了我16和'string.split(「\\^+」)'給了我8. – ares

+0

我沒有仔細閱讀你的問題,對不起我的壞。 – Maroun

回答

4

你可以做到這一點

String[] split = string.split("\\^", -1); 

,它不會降尾隨分隔符。


如果你真的要修剪的最後分離得到12個值,你可以做

String[] split = string.replaceAll("\\^$", "").split("\\^", -1); 

或這將確保你總是有12.要麼修剪或擴展的元素個數根據需要(加入null如果擴大)

String[] split = Arrays.copyOf(string.split("\\^", -1), 12); 
+4

但OP不會得到12,他會得到13 :)。最後一個''「''也會被認爲是 – TheLostMind

+0

好吧,我的壞,我其實是想要13,因爲在某些情況下可能有一個字符序列後面的最後一個字符,這是有趣的。我將相應地編輯該問題。 – ares

相關問題