2012-09-10 36 views
5

Tôi đang cố gắng lưu các nhóm trong một chuỗi vào một mảng để tôi có thể sử dụng chúng trong các biến riêng lẻ nếu tôi cần. Đối với điều này tôi sử dụng chia nhưng đối với một số lý do tôi chỉ nhận được chuỗi đầy đủ ở vị trí đầu tiên trong mảng: ultimate_array [0]. Nếu tôi muốn sử dụng ultimate_array [1] tôi nhận được một ngoại lệ như "ngoài giới hạn". Bạn có biết tôi đang làm gì sai không?chia không hoạt động chính xác

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

Đối số cho 'split()' phải là regex, vì vậy '$' là kết quả "kết thúc chuỗi" –

Trả lời

2

Bạn cần phải thoát khỏi $ (cuối chuỗi)

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

Lý do chia tay của bạn không hoạt động một cách chính xác là phân chia sử dụng regex và "$" là một nhân vật đặc biệt cho regexes (drekka)

+0

là chính xác. Lý do phân chia của bạn không hoạt động chính xác là việc chia tách sử dụng regex và "$" là ký tự đặc biệt cho các regex. – drekka

3

Việc phân chia mất một biểu thức chính quy và $ là một ký tự đặc biệt (kết thúc chuỗi), do đó bạn phải thoát nó bằng dấu gạch chéo ngược \. Dù sao thì nó cũng là nhân vật đặc biệt, lần này trong Java, vì vậy bạn cũng phải thoát khỏi nó. Các mã cuối cùng là:

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

Chỉ cần thay thế dòng của bạn:

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

với:

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

Tôi hy vọng sự cố của bạn đã được giải quyết ...

Các vấn đề liên quan