2009-07-31 34 views
9

Sử dụng VB.NET - Tôi có một chuỗi:Làm thế nào để tách một chuỗi sử dụng thiết bị tách nhân vật nhiều và duy trì tách

"##RES00012##Some value ##RES00034##Another value" 

Rằng tôi muốn chia bằng cách sử dụng "##RES" như một tách để:

"##RES00012## Some value""##RES00034## Another value"

Hàm string.split dường như không cung cấp quá tải để phân tách trên nhiều ký tự hoặc mảng ký tự và duy trì seperator, cần thiết cho chức năng thuần túy đặt ra.

Tôi đang tìm cách đơn giản tìm kiếm indexOf("##res") và sử dụng thao tác chuỗi để thực hiện việc này trừ khi tôi thiếu điều gì đó hiển nhiên? Tôi đã tìm kiếm SO cho một giải pháp nhưng không thể tìm thấy bất cứ điều gì mà thực sự làm những gì tôi đang sau.

Sau đây là gần nhất tôi đã tìm thấy: how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

Trả lời

16

Splitting trên nhiều ký tự không phải là khó khăn; có quá tải vào phương pháp String.split nào đó:

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

này sẽ cung cấp cho bạn một mảng với hai yếu tố:

"00012## Some value " 
"00034## Another value" 

Tuy nhiên, các dấu phân cách là bị bỏ rơi. Đây không phải là quá khó khăn mặc dù; nó phải được thêm vào phía trước của mỗi nguyên tố (trừ người đầu tiên nếu chuỗi không bắt đầu bằng các dấu phân cách):

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

For i As Integer = 0 To parts.Length - 1 
    If i > 0 OrElse input.StartsWith("##RES") = True Then 
     parts(i) = "##RES" & parts(i) 
    End If 
Next 
13

Đó là rất nhiều folks mã thêm ... Tại sao không chỉ cần sử dụng:

Dim inputs As String = "first value##second value##third value" 
Dim parts As String() = Strings.Split(inputs,"##") 
+0

Brilliant! Giải pháp rất rõ ràng. –

+0

Lớp "Strings" được định nghĩa ở đâu? –

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