2011-08-04 31 views
5

Đọc tệp ở dạng luồng: Stream fin = File.OpenRead(FilePath); Có cách nào để tôi có thể tìm và loại bỏ tất cả các dòng trả về từ luồng tệp đó không?C# xóa trả về vận chuyển bổ sung từ Luồng

CHỈNH SỬA: Mục tiêu là để loại bỏ đơn vận chuyển trả về \r và để lại vận chuyển trả lại những gì đang có với dòng mới "\r\n" nguyên vẹn.

Ví dụ file:

The key backed up in this file is:\r 
\r\n 
pub 2048R/65079BB4 2011-08-01\r 
\r\n 
     Key fingerprint = 2342334234\r 
\r\n 
uid     test\r 
\r\n 
sub 2048R/0B917D1C 2011-08-01\r 

Và kết quả sẽ giống như thế:

The key backed up in this file is: 
\r\n 
pub 2048R/65079BB4 2011-08-01 
\r\n 
     Key fingerprint = 2342334234 
\r\n 
uid     test 
\r\n 
sub 2048R/0B917D1C 2011-08-01 

EDIT2: Các giải pháp cuối cùng những gì được vẻ làm việc như thế này:

static private Stream RemoveExtraCarriageReturns(Stream streamIn) 
    { 
     StreamReader reader = new StreamReader(streamIn); 
     string key = reader.ReadToEnd(); 
     string final = key.Replace("\r\r", "\r"); 
     byte[] array = Encoding.ASCII.GetBytes(final); 
     MemoryStream stream = new MemoryStream(array); 
     return stream; 
    } 

Tôi lấy trong các Stream sử dụng StreamReader để đọc nó thành một chuỗi, sau đó loại bỏ các e xtra vận chuyển trở lại và viết nó trở lại một Stream. Mã của tôi có ổn không hoặc tôi có nên làm gì khác không?

+0

Trông tốt mặc dù có lẽ bạn nên thiết lập vị trí của con suối trở về zero trong phương pháp cho sự lanh tay API. Giải pháp tốt cho các tệp nhỏ. –

Trả lời

2

Sau khi xem xét văn bản mẫu của bạn, sau đây sẽ loại bỏ đơn trường 'r' của bạn:

string text = File.ReadAllText(FilePath); 

text = text.Replace("\r\r", "\r"); 

File.WriteAllText(FilePath + ".modified", text); 
+0

Cảm ơn, nó hoạt động! – hs2d

+1

Điều này có thể không phải là một vấn đề nhưng nếu cho chuỗi "" \ r \ r \ r "' kết quả sẽ vẫn là '" \ r \ r "'. Bạn sẽ phải làm thay thế hơn và hơn cho đến khi bạn nhận được cùng một chuỗi trở lại khi bạn thực hiện thay thế trên. – aL3891

+0

@ aL3891 Đồng ý, nhưng từ văn bản mẫu này sẽ không xảy ra. –

0

Replace Line Breaks in a String C#

Ở trên có câu trả lời. Bạn có thể đọc trong tập tin vào một chuỗi và sau đó loại bỏ các ngắt dòng.

+0

Tôi nghĩ rằng anh ấy muốn xóa chúng trực tiếp khỏi luồng nhưng Yeah, tốt hơn hết là chỉ xóa chúng sau khi đọc vào luồng. – Jethro

+0

Có, đọc tệp thành chuỗi là tùy chọn cuối cùng của tôi. Chỉ muốn biết liệu có cách nào để làm điều đó ngay trong luồng không. – hs2d

2

Làm thế nào về:

string final = string.Join("", File.ReadLines(path)); 

? Điều này đọc từng dòng, sau đó kết hợp lại mà không có bất kỳ dấu phân cách nào.

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