2011-09-12 39 views
23

Tôi có một chuỗi:C#: tách một chuỗi và không trở về chuỗi rỗng

a = "1;2;3;" 

Và tôi muốn split nó theo cách này:

foreach (string b in a.split(';')) 

Làm thế nào tôi có thể chắc chắn rằng tôi trở lại chỉ 1, 2, 3 và không phải là 'chuỗi rỗng'?

Nếu tôi chia 1;2;3 thì tôi sẽ nhận được những gì tôi muốn. Nhưng nếu tôi chia 1;2;3; thì tôi sẽ nhận được thêm 'chuỗi rỗng'. Tôi đã đề xuất và thực hiện điều này:

string[] batchstring = batch_idTextBox.Text.Split(';', StringSplitOptions.RemoveEmptyEntries); 

Tuy nhiên, tôi nhận được các lỗi này:

Lỗi 1 quá tải tốt nhất phương pháp phù hợp cho 'String.split (params char [])' có một số đối số không hợp lệ C: \ Documents and Settings \ agordon \ My Documents \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 36 EnterData

Lỗi 2 Đối số '2': không thể chuyển đổi từ ' System.StringSplitOptions ' để 'char' C: \ Documents and Settings \ agordon \ My Documents \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 68 EnterData

Trả lời

43

Chuỗi.Chia mất một mảng khi bao gồm bất kỳ StringSplitOptions:

string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

Nếu bạn không cần phải lựa chọn, cú pháp trở nên dễ dàng hơn:

string[] batchstring = batch_idTextBox.Text.Split(';'); 
5

đèo StringSplitOptions.RemoveEmptyEntries cho phương thức Split.

EDIT

Các phương pháp tách không có tình trạng quá tải để chia bởi một nhân vật duy nhất. Bạn cần chỉ định một mảng ký tự.

foo.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries); 
1

này cung cấp cho một shot:

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd((char)59).Split((char)59)); 

string test = "1;2;3;"; 
test = String.Join(",", test.TrimEnd(';').Split(';')); 
1

Không biết về các lựa chọn chia. Nếu bạn không có mà bạn có thể ...

a.Split(';').Where(s => s.Length > 0).ToArray(); 
1

Sử dụng

a.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 

Có 4 quá tải của .Split, hai trong số họ không hỗ trợ StringSplitOptions và sử dụng định dạng params (do đó bạn không cần phải tạo một mảng các bộ tách), hai trong số chúng hỗ trợ StringSplitOptions và yêu cầu một mảng là char hoặc string.

1
string line="Hello! Have nice day." 
string[] substr = line.Split(new[] {' '}, 2); 

Trên mã sẽ tách dòng thành hai chuỗi con dựa trên không gian đầu tiên. substr [0] sẽ có "Hello!" substr [1] sẽ có "Have nice day". Ở đây 2 trong Split là một số nguyên truy cập, bạn có thể vượt qua bất kỳ giá trị dựa trên yêu cầu của bạn.

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