C# 计算文件中以某个字符开始,以另一个字符结束的所有行数
我想要实现的是加载一个文本文件,然后计算以下所有行:C# 计算文件中以某个字符开始,以另一个字符结束的所有行数,c#,winforms,file,text,C#,Winforms,File,Text,我想要实现的是加载一个文本文件,然后计算以下所有行: 以字符“X”开头 以字符“Y”结尾 我的代码如下所示: string txtContent; try { if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtContent = File.ReadAllText(openFileDialog1.FileName); } } catch (Exception ex) { Messag
string txtContent;
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtContent = File.ReadAllText(openFileDialog1.FileName);
}
}
catch (Exception ex) {
MessageBox.Show(ex.Message, "Form1", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
我正在将txt文件内容读入txtContent
string变量。但我不知道如何继续 好吧,让我们做“提示”,而不仅仅是给你代码
- 在UI线程中读取文件通常不是一个好主意。快速试验是可以的,但不要在生产代码中进行
- 如果要读取文件中的行,请使用(.NET 2+)或(.NET 4+)
- 使用和确定字符串是以特定方式开始还是结束
- 考虑使用LINQ的方法来计算与谓词匹配的项
- 这听起来像是家庭作业,在这种情况下,我会给你一些建议-
如果使用(而不是
ReadAllText
),将得到每行的数组
然后,您可以使用(
StartsWith
和EndsWith
)来检查您的条件…如果您的目标是计算某些匹配行,则将所有文本读入内存不是很有效。相反,我将使用一个缓冲流和一次一条处理线
using (FileStream fs = File.Open(openFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.StartsWith(START_CHARACTER) || line.EndsWith(END_CHARACTER))
{
count++;
}
}
}
完全不适合做家庭作业的单行线
这是家庭作业吗?请正确地标记它,然后不确定这个评论是否适合这样做,只是想说我经常发现自己在这个网站上看到你的评论,几乎总是觉得它们非常有用。所以我想说谢谢你的帮助,不是特别的,而是一般的。编辑:我刚刚认出了你的名字,意识到我的桌子上放着你的一本书。。。所以我也要谢谢你,我想。。。我觉得听起来很熟悉
File.ReadLines(somePath).Count(line=>Regex.IsMatch(line,"(^X.*$)|(^.*Y$)"))