2013-05-01 38 views
5

Tôi đang cố gắng phân tích cú pháp một số dữ liệu bằng cách sử dụng Java được phân cách bởi '|' trình tự. Dưới đây là một ví dụ về dữ liệu.Chuỗi Java Tách bởi "|"

String s = "111206|00:00:00|2|64104|58041"; 
String [] temp = s.split("|"); 
for(String p: temp) 
System.out.println(p); 

Nhưng thay vì chia tách tại '|' nó tách riêng mọi nhân vật. Đây là đầu ra tôi nhận được cho mã trên.

1 
1 
1 
2 
0 
6 
| 
0 
0 
: 
0 
0 
: 
0 
0 
| 
2 
| 
6 
4 
1 
0 
4 
| 
5 
8 
0 
4 
1 

Tôi tìm thấy một vòng quay bằng cách thay thế '|' bởi ',' trong dòng, nhưng bản vá mã sẽ chạy nhiều lần và tôi muốn tối ưu hóa nó.

String s = "111206|00:00:00|2|64104|58041"; 
s = s.replace('|', ','); 

Tôi chỉ muốn biết vấn đề là gì với '|' ??

Trả lời

11

Bạn phải sử dụng:

String [] temp = s.split("\\|"); 

Điều này là do phương pháp split mất một biểu thức chính quy, và | là một trong những nhân vật đặc biệt. Nó có nghĩa là 'hoặc'. Điều đó có nghĩa là bạn đang tách theo '' or '', chỉ là ''. Do đó nó sẽ phân chia giữa mỗi nhân vật.

Bạn cần hai dấu gạch chéo vì thứ nhất là cho thoát khỏi thực tế \ trong chuỗi, vì \ là nhân vật thoát Java trong một chuỗi. Java hiểu chuỗi như "\|" và regex sau đó hiểu nó như "|".

+1

Điểm rep dễ dàng nhất! – jahroy

+0

@jahroy [FGITW] (http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem) :) – Doorknob

+0

Cách hoàn hảo, đẹp nhất và dễ nhất. –

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