有没有什么办法可以找出.NET用作其“默认行结束符”?例如,StringBuilder.AppendLine(String)的文档说它“附加指定字符串的副本,后跟默认行终止符...”。 .NET中几个与文本相关的类引用了相同的概念。.NET“默认行结束符”?
有没有什么办法可以通过编程来找出什么是作为行终止符(在运行时)?或者是否可以安全地假设Windows机器始终为“\ r \ n”?如果我能避免它,我宁愿不将这些值硬编码到我的代码中。
有没有什么办法可以找出.NET用作其“默认行结束符”?例如,StringBuilder.AppendLine(String)的文档说它“附加指定字符串的副本,后跟默认行终止符...”。 .NET中几个与文本相关的类引用了相同的概念。.NET“默认行结束符”?
有没有什么办法可以通过编程来找出什么是作为行终止符(在运行时)?或者是否可以安全地假设Windows机器始终为“\ r \ n”?如果我能避免它,我宁愿不将这些值硬编码到我的代码中。
StringBuilder.AppendLine
将使用Environment.NewLine
,其对于非Unix平台是“\r\n
”而对于Unix平台是“\n
”。
Windows机器始终为“\r\n
”,但您可以使用Environment.NewLine
代替硬编码值。
感谢@Guffa验证此
这是(使用.net反射)从StringBuilder.AppendLine(string)
方法的代码:
[ComVisible(false)]
public StringBuilder AppendLine(string value)
{
this.Append(value);
return this.Append(Environment.NewLine);
}
正如你看到的,它确实使用Environment.NewLine
财产。
在Mac上,换行符是'\ r',直到他们基于Linux操作系统。现在它的'\ n'。
仅仅是一个小小的挑剔:今天的Mac OS实际上基于UNIX,而不是Linux。第一个基于UNIX的版本于2001年初发布,大约在.NET发布前一年。所以'\ r'符号在一段时间内并不相关。 – 2011-06-20 16:33:06
啊完美,我知道一定有这样的事情。谢谢! – 2009-10-08 16:25:23
希望有一种方法可以更改特定StringBuilder对象的默认行终止符 – Alex 2012-07-05 14:34:18