如何从Windows文本文件中分割行(/ r / n分隔)

时间:2010-11-30 11:51:55

标签: c# .net string

我的问题很简单。我需要从Windows文本文件中获取所有文本行。 所有行都用\ r \ n符号分隔。我使用String.Split,但它并不酷,因为 它只拆分“一个符号”,留下我需要用选项标记删除的空字符串。有没有更好的办法?

我的实施

string wholefile = GetFromSomeWhere();

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

// ok now I have lines array

更新

File.ReadAllXXX在这里没用。考虑GetFromSomeWhere实际上是RegEx,所以在此之后我没有文件。

4 个答案:

答案 0 :(得分:15)

您可以使用String.Split string[] lines = operationtext.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); ,其中包含一系列可用作分隔符的字符串:

string[] lines = File.ReadAllLines(filePath);

当然,如果您已经拥有文件路径,那么使用this overload要简单得多:

{{1}}

答案 1 :(得分:4)

String.Split接受一个字符串(如“\ r \ n”)。不只是一个chararray。

string[] lines = wholetext.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:4)

您可能会发现简单地使用File.ReadAllLines()File.ReadLines()

会更容易

答案 3 :(得分:3)

您可以使用类似下面的扩展方法,然后您的代码将如下所示:

    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();
        }
    }

我猜它不像分裂选项那样高效,但通常非常高效,但如果这不是问题......