2012-09-10 68 views
5

我想將字符串中的組保存爲一個數組,以便我可以在個別變量中使用它們(如果需要的話)。對於這個我使用分割,但由於某種原因,我只得到數組中第一個位置的完整字符串:ultimate_array [0]。如果我想使用ultimate_array [1],我會得到一個例外,如「越界」。 你有什麼想法我做錯了什麼?拆分不能正常工作

String string_final = ""; 
String[] ultimate_array = new String[100]; 
String sNrFact = ""; 

string_final="Nrfact#$idfact1#$valfact1#$idfact2#$valfact2#$idfact3#$valfact3#$idfact4#$valfact4#$idfact5#$valfact5#$idfact6#$valfact6#$idfact7#$valfact7#$idfact8#$valfact8#$idfact9#$valfact9#$idfact10#$valfact10"; 

ultimate_array = string_final.split("#$"); 
sNrFact = ultimate_array[0]; 
+3

'split()'的參數應該是正則表達式,所以'$'匹配「字符串結尾」 –

回答

2

你需要逃避

ultimate_array = string_final.split("#\\$"); 
2
ultimate_array = string_final.split("#\\$"); 

將拆分工作不正常的原因是拆分使用正則表達式和「$」是一個特殊字符的正則表達式(drekka

+0

的答案是正確的。你的分割工作不正常的原因是分割使用正則表達式,「$」是正則表達式的特殊字符。 – drekka

3

分裂接受一個正則表達式和$是一個特殊字符(字符串的結尾),所以你必須用反斜槓\來轉義它。無論如何,它也是特殊的字符,這次用Java,所以你也必須逃避它。最後的代碼是:

ultimate_array = string_final.split("#\\$"); 
0

$(字符串的年底)只需更換您的線路:

ultimate_array = string_final.split("#$"); 

有:

ultimate_array = string_final.Split(new string[] { "#$" }, StringSplitOptions.None); 

我希望你的問題得到解決...