2012-04-12 52 views
0

您好我試圖grep通過文件和計數行數,每行最大數量的空間和最長的行。如何檢查從文件讀取的字符是「/ n」?

如何我可以確定「/ n」字符,如果我通過char槽給定文件迭代字符?

非常感謝。

這裏是我的代碼,我用這個:其實

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(); 
} 
+2

斜槓是另一種方式,你需要單引號而不是雙引號:) – dasblinkenlight 2012-04-12 13:23:32

+1

請提供你目前如何嘗試的代碼。 – 2012-04-12 13:30:46

回答

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,而不是清除它們只有當你看到一個換行符。

+0

謝謝我會試試這個! – AlexBerd 2012-04-12 13:44:51

+0

沒錯。 'current_length'應該在找到換行符的分支中清零。我不喜歡把一個字符與'null'比較,但那可能就是我。 – 2012-04-12 13:45:56

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

我用這個...它不起作用! 有沒有辦法做到這一點,如我們檢查空間char:char.IsSpace() – AlexBerd 2012-04-12 13:24:12

+0

「它不工作」?什麼「不起作用」呢? – Oded 2012-04-12 13:24:48

+0

@AlexanderBerdichevsky:您是否使用反斜槓而不是斜槓? – 2012-04-12 13:25:06

0

儘量比較Environment.NewLine

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

我猜你換行\r\n(非Unix上)結束。您需要跟蹤前一個/當前字符並查找\r\nEnvironment.NewLine

+0

你知道'Environment.NewLine'是一個由兩個字符組成的字符串,所以它永遠不會匹配單個字符? – 2012-04-12 13:31:13

+1

@MrLister - 你知道這取決於平臺嗎? – SwDevMan81 2012-04-12 13:32:08

+0

所有更多的理由不使用它! – 2012-04-12 13:36:05

相關問題