2009-10-08 70 views
25

有沒有什麼辦法可以找出.NET用作其「默認行結束符」?例如,StringBuilder.AppendLine(String)的文檔說它「附加指定字符串的副本,後跟默認行終止符...」。 .NET中幾個與文本相關的類引用了相同的概念。.NET「默認行結束符」?

有沒有什麼辦法可以通過編程來找出什麼是作爲行終止符(在運行時)?或者是否可以安全地假設Windows機器始終爲「\ r \ n」?如果我能避免它,我寧願不將這些值硬編碼到我的代碼中。

回答

40

StringBuilder.AppendLine將使用Environment.NewLine,其對於非Unix平臺是「\r\n」而對於Unix平臺是「\n」。

Windows機器始終爲「\r\n」,但您可以使用Environment.NewLine代替硬編碼值。

感謝@Guffa驗證此

+1

啊完美,我知道一定有這樣的事情。謝謝! – 2009-10-08 16:25:23

+1

希望有一種方法可以更改特定StringBuilder對象的默認行終止符 – Alex 2012-07-05 14:34:18

17

這是(使用.net反射)從StringBuilder.AppendLine(string)方法的代碼:

[ComVisible(false)] 
public StringBuilder AppendLine(string value) 
{ 
    this.Append(value); 
    return this.Append(Environment.NewLine); 
} 

正如你看到的,它確實使用Environment.NewLine財產。

2

在Mac上,換行符是'\ r',直到他們基於Linux操作系統。現在它的'\ n'。

+3

僅僅是一個小小的挑剔:今天的Mac OS實際上基於UNIX,而不是Linux。第一個基於UNIX的版本於2001年初發布,大約在.NET發佈前一年。所以'\ r'符號在一段時間內並不相關。 – 2011-06-20 16:33:06