Как разделить строки из текстового файла Windows (/ r / n разделение) - PullRequest
6 голосов
/ 30 ноября 2010

Мой вопрос довольно прост. Мне нужно получить все текстовые строки из текстового файла Windows. Все строки разделены символами \ r \ n. Я использую String.Split, но это не круто, потому что он разделяется только на один символ, оставляя пустую строку, которую мне нужно удалить с опцией flag. Есть ли способ лучше?

Моя реализация

string wholefile = GetFromSomeWhere();

// now parsing
string[] lines = operationtext.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

// ok now I have lines array

UPDATE

File.ReadAllXXX здесь бесполезен, потому что GetFromSomeWhere на самом деле RegEx, поэтому у меня нет файла после этого пункта

Ответы [ 4 ]

15 голосов
/ 30 ноября 2010

Вы можете использовать эту перегрузку из String.Split, которая принимает массив строк, которые могут служить разделителями:

string[] lines = operationtext.Split(new[] { Environment.NewLine },  
                                     StringSplitOptions.RemoveEmptyEntries);

Конечно, если у вас уже есть файл-путь, гораздо проще использовать File.ReadAllLines:

string[] lines = File.ReadAllLines(filePath);
4 голосов
/ 30 ноября 2010

Возможно, вам будет гораздо проще просто использовать File.ReadAllLines () или File.ReadLines ()

4 голосов
/ 30 ноября 2010

String.Split принимает строку (например, "\ r \ n").Не просто chararray.

string[] lines = wholetext.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
3 голосов
/ 30 ноября 2010

вы можете использовать метод расширения, подобный приведенному ниже, и ваш код будет выглядеть так:

    var lines = operationText.ReadAsLines();

Реализация метода расширения:

    public static IEnumerable<string> ReadAsLines(this string text)
    {
        TextReader reader = new StringReader(text);
        while(reader.Peek() >= 0)
        {
            yield return reader.ReadLine();
        }
    }

Полагаю, это не так эффективно, как опция разделения, которая обычно очень эффективна, но если это не проблема ...

...