我能否更改Environment.NewLine的值?

7

我正在使用一个库,它在写文件时使用Environment.NewLine作为换行符。我需要将其更改为Unix格式的换行符。

我能否更改Environment.NewLine的值?

除了创建后转换文件之外,还有其他想法吗?


为什么你不能手动编写换行符,如果那正是你想要的? - ryeguy
7个回答

10

我能改变 Environment.NewLine 的值吗?

不能。如果你知道要编写哪个平台的代码,可以为每个平台创建一个类并让它们拥有自己的实现。在最简单的情况下,这将看起来像以下内容:

public abstract class Platform { public abstract string Newline { get; } }

public sealed class Unix : Platform {
    public override string Newline { get { return "\n"; } }
}

等等,然后只需使用适当类的实例即可。


那就是我想的。由于这不是我要更改的库,所以我会在创建后进行转换。谢谢! - TheSoftwareJedi

1
根据MSDN,Environment类是密封的,因此您无法从中继承以更改值。据我所知,那是您唯一能够做到的方式。或者,您可以尝试创建一个扩展Environment类的部分类。我从未尝试过后者,所以不确定它是否有效。

1
NewLine属性是静态的...你可以随意扩展。 - Kugel

1

Environment.Newline 返回托管 .Net 运行时的运行时环境的换行符。您不应该使用它来将换行符转换为另一个平台的换行符。

我建议您实现自己的类进行转换。


0

Environment.NewLine属性是一个常量,因此无法更改。我建议的最好方法是将使用该属性的所有地方都更改为您自己的常量。


0

第三方库是将数据写入流还是传递文件名?

如果是前者,你可以传递一个内存流,然后使用替换操作获取所需的换行符。如果是后者,让它先写入临时文件,然后再将流传递到真实文件(同时替换行尾)。


0

天啊,如果你这样做的话,你会完全改变System.Environment命名空间的整个含义。

你想要做的是为特定的操作系统编写代码(无论你在哪个环境下运行应用程序),所以起步时不应该使用Environment。


-2

我们遇到了这样的问题,需要将NewLine的值更改为<br />以用于Web输出。

这就需要在我们的类中创建另一个属性来使用。实际上没有其他解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接