如何检查从文件中读取的char是“/ n”?

时间:2012-04-12 13:21:08

标签: c# string

您好我正试图通过文件和计算行数,每行最大空格数和最长行。

如果我通过char给定文件迭代char,我如何确定“/ 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();
}

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

你不需要逐字逐句:为了你的目的,一行一行就足够了,你可以让.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之后归零字符,而不是仅当您看到换行符时才清除它们。

答案 2 :(得分:0)

尝试与Environment.NewLine

进行比较
bool is_newline = currentChar.ToString().Equals(Environment.NewLine);

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