我想要实现的是加载文本文件,然后计算所有行:
我的代码如下所示:
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
字符串变量。但我不知道如何继续?
答案 0 :(得分:6)
好吧,让我们做“提示”,而不仅仅是给你代码......
File.ReadAllLines
(.NET 2+)或File.ReadLines
(.NET 4 +)string.StartsWith
和string.EndsWith
确定字符串是否以特定方式开始或结束Count()
方法来计算与谓词匹配的项目答案 1 :(得分:1)
一个班轮完全不适合做家庭作业。 ;)
File.ReadLines(somePath).Count(line=>Regex.IsMatch(line,"(^X.*$)|(^.*Y$)"))
答案 2 :(得分:0)
这听起来像是家庭作业,在这种情况下,我会给你指点 -
如果您使用File.ReadAllLines(而非ReadAllText
),则会获得每行的数组。
然后,您可以使用methods on String,例如(StartsWith
和EndsWith
)来检查您的情况......
答案 3 :(得分:0)
如果你的目标是计算某些匹配的行,那么将所有文本读入内存效率不高。相反,我会使用缓冲流并一次处理一行
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++;
}
}
}