2013-01-19 47 views
74

Tôi cần trợ giúp với phương thức split(). Tôi có sau String:Chuỗi phân tách Java thành mảng

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

tôi cần phải đưa các giá trị vào một mảng. Có 3 dây càng tốt: "0", "1", và ""

Vấn đề của tôi là, khi tôi cố gắng sử dụng split():

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

giá trị của tôi được lưu chỉ cho đến khi cuối cùng 0. Có vẻ giống như phần "|||" bị cắt. Tôi đang làm gì sai?

cảm ơn

Trả lời

115

Hành vi này được ghi chép lại một cách rõ ràng trong String.split(String regex) (tôi nhấn mạnh):

phương pháp này hoạt động như thể bằng cách gọi phương pháp phân chia hai tranh cãi với biểu thức nhất định và một cuộc tranh luận hạn zero. Vì vậy, việc tạo chuỗi trống do đó không bao gồm trong mảng kết quả.

Nếu bạn muốn những chuỗi rỗng trailing bao gồm, bạn cần phải sử dụng String.split(String regex, int limit) với một giá trị âm cho tham số thứ hai (limit):

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

Thank, đó là chính xác những gì tôi cần. Chuỗi mảng [] = myValues.split ("\\ |", -1); – Dusan

1

Điều này được mong đợi. Tham khảo Javadocs cho split.

Splits this string around matches of the given regular expression. 

phương pháp này hoạt động như thể bằng cách gọi sự chia rẽ hai đối số phương pháp (java.lang.String, int) với biểu thức nhất định và một cuộc tranh luận hạn zero. Vì vậy, việc luồn chuỗi rỗng sẽ không được bao gồm trong mảng kết quả.

23

Hãy thử điều này

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

xem xét này ví dụ:

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] 
    } 
} 

Kết quả không bao gồm các chuỗi rỗng giữa "|" dấu phân cách. Để giữ cho chuỗi rỗng:

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, , , ] 
    } 
} 

Để biết thêm chi tiết hãy vào trang web này: http://www.rgagnon.com/javadetails/java-0438.html

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