2010-10-21 37 views
7

thể trùng lặp:
Easiest way to split a string on newlines in .net?Đọc một dòng chuỗi mỗi dòng trong C#

Tôi đang cố gắng để đọc và giải thích một dòng chuỗi trên mỗi dòng. Tôi đã xem xét lớp StringReader, nhưng tôi cần tìm hiểu khi nào tôi đang ở dòng cuối cùng. Dưới đây là một số giả mã về những gì tôi đang cố gắng hoàn thành:

while (!stringReaderObject.atEndOfStream()) { 
    interpret(stringReaderObject.readLine()); 
} 

Có ai biết cách thực hiện việc này không?

Cảm ơn!

Yvan

+0

Không thực sự là một bản sao ... cả hai câu hỏi đều có các giải pháp khác nhau. – cybermonkey

Trả lời

38

Nếu bạn đang đọc nó từ một file, nó dễ dàng hơn để làm việc làm:

foreach(var myString in File.ReadAllLines(pathToFile)) 
    interpret(myString); 

Nếu bạn đang nhận được chuỗi từ một nơi khác (một lớp dịch vụ web hoặc tương tự), nó là đơn giản chỉ chia chuỗi:

foreach(var myString in entireString.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) 
    interpret(myString); 
+1

Tôi nghĩ đây là giải pháp dễ nhất cho vấn đề của tôi. Cảm ơn! – friedkiwi

+0

nếu chuỗi của anh ấy có \ r \ n dòng mới và anh ấy trên Unix? –

+1

@SB sau đó tôi chắc chắn rằng anh ta đã thêm thẻ "đơn" và "interop" ;-) –

3

Lớp StreamReader có thuộc tính EndOfStream. Bạn đã xem xét sử dụng điều đó chưa?

3

Tôi không chắc chắn bạn đang đọc từ đâu. Nếu nó là từ Console, bạn có thể kiểm tra kết thúc đầu vào chuỗi như "bỏ" để biểu thị kết thúc đầu vào

String input; 
while((input = reader.readLine()) != "quit"){ 
    // do something 
} 
3

Như thế này:

string line; 
while (null != (line = reader.ReadLine()) { 
    Process(line); 
} 
+1

Không. Như sau: 'while (true) {string line = reader.ReadLine(); if (line == null) {break; } Quy trình (dòng); } '. Đó là dòng mã duy nhất đang làm quá nhiều. – jason

+0

@ Jason - không thực sự. Ngoài ra, đó là mô hình sử dụng kinh điển trong mọi ví dụ tôi từng thấy. – Kev

+0

@Kev: Nó giống như một thói quen xấu được truyền từ thế hệ này sang thế hệ khác. – jason

4

Kiểm tra cho null khi bạn làm một readLine - xem docs.

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