仅匹配换行符

Cur*_*eak 6 c# regex newline

我有一个文本文件,其中包含由换行符分隔的数据行.我要做的是计算文件中的行数,不包括仅作为换行符的行数.

我正在尝试使用正则表达式来查看读取的每一行,如果它以换行符开头,不包括在我的行计数中,但我似乎无法让它工作.我已经到处搜索了如何做到这一点没有结果.

这是我为了尝试这样做而编写的方法:

public int LineCounter()
{
    StreamReader myRead = new StreamReader(@"C:\TestFiles\test.txt");
    int lineCount = 0;
    string line;

    while ((line = myRead.ReadLine()) != null)
    {
        string regexExpression = @"^\r?\n";
        RegexOptions myOptions = RegexOptions.Multiline;
        Match stringMatch = Regex.Match(line, regexExpression, myOptions);
        if (stringMatch.Success)
        {
        }
        else 
        {
            lineCount++;
        }
    }
    return lineCount;
}
Run Code Online (Sandbox Code Playgroud)

我试着改变RegexOptions之间SinglelineMultiline中,我试图把"\r|\n|\r\n"在我的模式匹配,我已经试图消除^从表情,但我似乎无法得到它的工作.无论我做什么,我lineCount总是最终成为文件中的总行数,包括换行符.

我显然忽略了一些明显的东西,但我还不熟悉C#语言,看看有什么不对.一切看起来应该对我有用.有人可以帮帮我吗?

Mat*_*son 1

尝试稍微更改您的代码以执行类似的操作(删除正则表达式)。Readline 函数将从它返回的行中删除 \n 字符。因此,如果您看到一个空的非空字符串,那么您实际上看到了您正在寻找的内容。此外,您还希望使用 using 语句包装 StreamReader,以确保在发生灾难性情况时关闭文件。

注意:此代码还对仅包含空格的行进行计数。从你的描述来看,这就是你想要的。

public int LineCounter()
    {
        using (StreamReader myRead = new StreamReader(@"C:\TestFiles\test.txt"))
        {
            int lineCount = 0;
            string line;

            while ((line = myRead.ReadLine()) != null)
            {
                if (line.Count() != 0)
                {
                    lineCount++;
                }
            }
        }

        return lineCount;
    }
Run Code Online (Sandbox Code Playgroud)