您好我正试图通过文件和计算行数,每行最大空格数和最长行。
如果我通过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();
}
答案 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_length
和current_MaximumSpaces
之后归零字符,而不是仅当您看到换行符时才清除它们。
答案 2 :(得分:0)
bool is_newline = currentChar.ToString().Equals(Environment.NewLine);
我猜你的换行实际上是\r\n
(非Unix)的结尾。您需要跟踪上一个/当前的字符,并查找\r\n
或Environment.NewLine
。