如何检查从文件中读取的字符是否为“/n”

本文关键字:是否 字符 读取 何检查 检查 文件 | 更新日期: 2023-09-27 18:31:05

嗨,我正在尝试 grep 文件并计算行数、每行最大空格数和最长行数。

如果我通过给定文件逐个字符迭代字符,我如何确定"/n"字符?

多谢。

这是我用于此目的的代码:

    using (StreamReader sr = new StreamReader(p_FileName))
     {
  char currentChar;
  int current_length=0,current_MaximumSpaces=0;
    p_LongestLine=0;
    p_NumOfLines=0;
    p_MaximumSpaces=0;
    while (!sr.EndOfStream){
        currentChar=Convert.ToChar(sr.Read());
        current_length++;
        if(Char.IsWhiteSpace(currentChar) || currentChar==null){
            current_MaximumSpaces++;
        }
        if(currentChar == ''n'){
            p_NumOfLines++;
        }
        if(current_length>p_LongestLine){
            p_LongestLine=current_length;
        }
        if(current_MaximumSpaces>p_MaximumSpaces){
            p_MaximumSpaces=current_MaximumSpaces;
        }
        current_length=0;
        current_MaximumSpaces=0;
    }
    sr.Close();
}

如何检查从文件中读取的字符是否为“/n”

if(currentChar == ''n')
    count++;

您不需要逐个字符:出于您的目的,逐行就足够了,并且您可以获得 .NET 来处理依赖于系统的换行符作为额外的奖励。

int maxLen = -1, maxSpaces = -1;
foreach ( var line in File.ReadLines("c:''data''myfile.txt")) {
    maxLen = Math.Max(maxLen, line.Length);
    maxSpaces = Math.Max(maxSpaces, line.Count(c => c == ' '));
}

编辑:由于与您检查''n'无关的错误,您的程序无法正常工作:您将每个字符后的current_lengthcurrent_MaximumSpaces归零,而不是仅在看到换行符时才清除它们。

尝试与Environment.NewLine进行比较

bool is_newline = currentChar.ToString().Equals(Environment.NewLine);

我猜你换行符实际上是'r'n(非 Unix)结尾。 您需要跟踪以前/当前的字符并查找'r'nEnvironment.NewLine