2011-08-16 24 views
7

Tôi đang cố gắng phân tích một tập hợp các tệp dữ liệu "chiều rộng cố định", tôi sử dụng nó trong dấu ngoặc kép vì chiều rộng khác nhau cho mỗi tệp dữ liệu. Tuy nhiên, các trường được phân cách bằng X số khoảng trắng nên tôi nghĩ chỉ cần đọc trong dòng, sau đó thực hiện dòng.Split ('')String.Split() - xử lý các dấu phân tách liên tiếp thành một

Tuy nhiên, điều này không hoạt động cho các khoảng trắng liên tiếp! !

Trả lời

17

Bạn có một vài tùy chọn.

Đầu tiên là sử dụng quá tải string.Split() chấp nhận một tham số StringSplitOptions và vượt qua trong StringSplitOptions.RemoveEmptyEntries:

string[] columns = lineOfText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); 

Bằng cách đó, nếu bạn có nhiều không gian trong một hàng, các mục trống được tạo ra sẽ bị loại bỏ .

Tùy chọn thứ hai là sử dụng cụm từ thông dụng để thực hiện phân tích cú pháp của bạn. Điều này có lẽ là không cần thiết trong trường hợp của bạn, nhưng có thể có ích nếu định dạng trở nên phức tạp hơn, hoặc bạn mong đợi nó thay đổi một chút theo thời gian.

+0

+1, nhưng Regex có vẻ hơi quá tải để tách các dòng thành các giá trị được phân cách bằng dấu cách. Tùy chọn 1 nên được tốt. – StriplingWarrior

+0

@Stripling Fair đủ; Tôi cảm thấy nó thích hợp hơn chỉ vì các nhóm chụp được đặt tên và các đường viền linh hoạt giúp điều chỉnh các định dạng thay đổi dễ dàng hơn. Nhưng vâng, trong trường hợp đơn giản này, tùy chọn 1 có khả năng còn tốt hơn. – dlev

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