2009-10-28 34 views
22

ví dụ, tôi có thể làm điều này:vb.net: bạn có thể chia một chuỗi bằng một chuỗi

split = temp_string.Split("<beginning of record>") 

những người bạn đề nghị:

split = Regex.Split(temp_string, "< beginning of record >") 

không nó làm việc. chỉ trả lại char đầu tiên của mình "<"

và những người bạn mà đề nghị:

Dim myDelims As String() = New String(){"< beginning of record >"} 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

này không hoạt động nữa. nó cũng trở về chỉ là char đầu tiên

+0

Tôi nghĩ vấn đề là bạn cần phải thoát khỏi chữ V. Xem chỉnh sửa của tôi. –

+1

Nếu bạn tiếp tục gặp sự cố, bạn có thể muốn đưa ra một ví dụ về điều đó là trong temp_string. Mẫu của bạn đang hoạt động tốt cho temp_string = "before sau" –

+0

Regex.split làm việc cho tôi. Tùy chọn mảng char với String.split có vẻ như nó sẽ tách ra ở mọi tham chiếu của <, b, e, g, i, n, n, i, n, g, v.v. riêng lẻ hơn là toàn bộ. – Jono

Trả lời

31

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

string[] myDelims = new string[] { "<beginning of record>" }; 
split = temp_string.Split(myDelims,StringSplitOptions.None); 

Chạy này thông qua một kết quả chuyển đổi mã trong này:

Dim myDelims As String() = New String() { "<beginning of record>" } 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

Bạn cũng có thể cần phải thoát khỏi chữ V, như thế này:

"\< beginning of record \>" 
+1

matt tôi có thể nhận được rằng trong định dạng vb.net xin vui lòng –

1

Tôi không nghĩ vậy, nó chỉ mất ký tự. Bạn có thể làm một số công việc xấu xí hack xung quanh và lần đầu tiên thay thế tất cả các trường hợp của chuỗi với một số ký tự không tồn tại trong chuỗi, và sau đó để tách trên nhân vật đó.

Chỉnh sửa để thêm: Tôi nghĩ Regex.Split có thể thực hiện phân chia trên regex, vì vậy nếu bạn tạo một regex đơn giản chỉ đơn giản là chuỗi bạn muốn chia nhỏ, điều đó sẽ hoạt động.

+0

brian u có thể xin vui lòng cho tôi mã cho rằng –

+0

chia = Regex.Split (temp_string, "<đầu ghi>")? –

+0

có thể giống như thế này? mẫu = "<đầu kỷ lục>" r Dim Như Regex r = new Regex (pattern) kết quả Dim As String() kết quả = r.Split (temp_string) có thể làm việc ... Tôi không biết vb hoặc bất cứ điều gì, chỉ là một đoán dựa trên tài liệu –

5

Bạn có thể xem phương thức Regex.Split().

Và điều này dường như làm việc

dim s as string = "you have a <funny> thing <funny> going on" 
    dim a() as string = Regex.Split(s,"<funny>") 
    for each b as string in a 
    Response.Write(b & "<br>") 
    next 
15

@Matthew Jones 'câu trả lời trong VB.NET

Dim delim as String() = New String(0) { "<beginning of record>" } 
split = temp_string.Split(delim, StringSplitOptions.None) 
+0

+1 bởi vì bạn đã đánh bại tôi –

2

Nếu những gì bạn đang thực sự tách được XML đọc vào một chuỗi, sau đó không sử dụng VB dây để làm việc đó. Sử dụng XSLT. VB/C# có các phương thức để hiển thị XML bằng XSLT. Nó sẽ nhanh hơn và đáng tin cậy hơn nhiều.

3

này dường như làm việc

Dim myString As String = "aaajjbbbjjccc" 
    Dim mySplit() As Char = "jj".ToCharArray 
    Dim myResult() As String = myString.Split(mySplit, StringSplitOptions.RemoveEmptyEntries) 
6

Bạn có thể viết cho mình một phương pháp khuyến nông để làm cho nó dễ dàng hơn (Dựa trên câu trả lời của Matthew Jones)

(đoán tôi sẽ hiển thị một ví dụ là tốt. ..)

Dim results = "hay needle hay needle hay".Split("needle") 
' results(0) = "hay " 
' results(1) = " hay " 
' results(2) = " hay" 

... C# ...

public static class Tools 
{ 
    public static string[] Split(this string input, params string[] delimiter) 
    { 
     return input.Split(delimiter, StringSplitOptions.None); 
    } 
} 

... VB.Net ...

Module Tools 
    <Extension()> _ 
    Public Function Split(ByVal input As String, _ 
          ByVal ParamArray delimiter As String()) As String() 
     Return input.Split(delimiter, StringSplitOptions.None) 
    End Function 
End Module 
Các vấn đề liên quan