2009-03-30 29 views
5

Tôi muốn chia một chuỗi trong C# giống nhưsplit chuỗi dựa trên regexp

a: b: "c: d"

để các mảng kết quả sẽ có

Array [0 ] = "a"

Array [1] = "b"

Array [2] = "c: d"

gì regexp tôi sử dụng để đạt được kết quả yêu cầu.

Nhiều Cảm ơn

Trả lời

4

Nếu ruột delimiter được phân cách bằng khoảng trắng, bạn có thể sử dụng \ s để phù hợp với khoảng trắng:

string example = "a : b : \"c:d\""; 
string[] splits = Regex.Split(example, @"\s:\s"); 
+0

Rất tiếc, tôi đoán phần này sẽ giữ dấu ngoặc kép quanh "c: d" ... –

+0

Cảm ơn Andy, điều đó sẽ giúp ích rất nhiều. –

1

Điều này dường như làm việc trong RegexBuddy cho tôi

(\w+)\s:\s(\w+)\s:\s"(\w+:\w+)"

đầu vào

a: b: "c: d"

phù hợp nhóm

  1. một
  2. b
  3. c: d

Như luôn luôn cẩn thận và hiểu những gì các regex thực hiện. Đừng chỉ sao chép một cách mù quáng. Điều này khớp với các ký tự từ \w, dấu cách \s, v.v. Hãy xem xét dữ liệu nào mà dữ liệu đầu vào của bạn sẽ thực sự có trong đó!

+0

Tuyệt vời, bây giờ anh có * hai * vấn đề; p –

+0

tôi có 99 vấn đề nhưng một regex ain' tấn. –

+0

Tôi nghĩ rằng nên có nhiều giải pháp rộng hơn với | ..smth như: (\ w +) \ s: |: \ s "(\ w +: \ w +)" ..hoặc kiểu này – 0x49D1

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