我有一个文本文件,其中包含由换行符分隔的数据行.我要做的是计算文件中的行数,不包括仅作为换行符的行数.
我正在尝试使用正则表达式来查看读取的每一行,如果它以换行符开头,不包括在我的行计数中,但我似乎无法让它工作.我已经到处搜索了如何做到这一点没有结果.
这是我为了尝试这样做而编写的方法:
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之间Singleline和Multiline中,我试图把"\r|\n|\r\n"在我的模式匹配,我已经试图消除^从表情,但我似乎无法得到它的工作.无论我做什么,我lineCount总是最终成为文件中的总行数,包括换行符.
我显然忽略了一些明显的东西,但我还不熟悉C#语言,看看有什么不对.一切看起来应该对我有用.有人可以帮帮我吗?
尝试稍微更改您的代码以执行类似的操作(删除正则表达式)。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)
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |