2012-05-28 66 views

回答

6

試試這個,而不是

if (sC.Equals('\n')) 

如果你相信會有永遠是\n\r,那麼你可以用另一個電話reader.Read();吞下它。例如:

if (sC.Equals('\n')) { 
    reader.Read() 
    Console.WriteLine("+1"); 
} 
+0

這個工作..但它確實留下了'\ r'揮之不去..我很困惑;/ – natli

+0

你可以用'reader.Read()'調用吞下'\ r'。 –

2

這是因爲Environment.NewLineString\r\n(取決於您的環境,在Windows平臺上它是\r\n) - 這是Carrige返回和換行字符 - 這是一對通常定義新行

所以比較字符(這可以是\n\r)至\r\n總是產生false

相反,如@jurgen D的答覆中提到,嘗試比較\n

+0

您的聲明的開始對於Unix/Linux環境(例如在Mono下運行)並非如此。 – Oded

+0

@提供,很高興知道,謝謝:D – Shai

0

Environment.NewLine實際上是兩個字符:\ r \ n

你真的需要一次讀取一個字符?您不希望使用StringReader並使用ReadLine()嗎?

0

簡單的方法來刪除\ n \ r

 String text = "test\n\r"; 
     if (text[text.Length - 1] == 10 && text[text.Length - 2] == 13) 
      text= text.Substring(0, text.Length - 2); 
相關問題