Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Net是否包含检查输入格式的内置行尾转换_C#_.net_Newline_Line Endings - Fatal编程技术网

C# Net是否包含检查输入格式的内置行尾转换

C# Net是否包含检查输入格式的内置行尾转换,c#,.net,newline,line-endings,C#,.net,Newline,Line Endings,我从外部本机库函数获取一个字符串,该函数使用“\n”分隔行。我只想在运行.Net应用程序(通常是windows)的系统上使用适当的行尾格式将其写入磁盘。因此,“Environment.NewLine”的结果正确为“\r\n” 我只是将字符串通过 MyString = NativeLib.GetStringEitherLForCRLF(); File.WriteAllText(MyFile, MyString); // will not change LF format 这并不会改变lineen

我从外部本机库函数获取一个字符串,该函数使用“\n”分隔行。我只想在运行.Net应用程序(通常是windows)的系统上使用适当的行尾格式将其写入磁盘。因此,“Environment.NewLine”的结果正确为“\r\n”

我只是将字符串通过

MyString = NativeLib.GetStringEitherLForCRLF();
File.WriteAllText(MyFile, MyString); // will not change LF format
这并不会改变lineendings,这似乎是有意的。然而,我想知道,C中使用asciimode中的fwrite的同一字符串可能会改变我记忆中的LineEnds

既然转换是一项简单的任务,我只是好奇,那么.Net中的“正确”或最佳实践方式应该是什么呢。是否有根据当前环境设置自动转换线条端点的标准功能

编辑: 所以5分钟后就被否决了

伙计们,我知道如何替换字符串中的字符,这不是基本问题。确切的问题是:

是否存在一个.Net标准库函数,该函数将根据操作系统和环境设置进行换行转换,或者可能必须与某个参数一起使用才能确保这一点?

例如:

File.WriteAllText(MyFile, MyString, Lineencoding.CRLF); // which does not exist

但我可能错过了一个选项,但看起来不是这样的。
我不想为这样一个琐碎的任务编写不必要的样板代码

这个问题在中也有描述,只是为了说明我可以比大多数人想象的更复杂。我不完全确定拟议的正则表达式解决方案是否能在所有情况下100%有效

编辑2:
我更改了标题以使我的意图更加清晰,因为似乎前一个标题出于什么原因更倾向于否决投票…

如果您确实以
字符串(与文件或其他内容相反)的形式获得输入,则在其上创建
StringReader
。在读卡器上,以循环方式执行
.ReadLine()
,并将每一行写入文件(例如,使用
StreamWriter
)。

您只需替换字符串即可。你试过了吗?@mason:嗨,mason,那很容易,但既然这么容易,我就想知道是否存在任何.Net标准函数来处理这行结尾的东西。默认情况下,我可以使用它来避免将来出现问题。你说的“检查良好”是什么意思?它所要做的只是一个简单的字符串替换。如果您想检查混合行结尾,那么可以编写一些代码来检查混合行结尾。问题是您所描述的是特定于应用程序的逻辑。选择当存在混合线端点、或没有线端点、或所有线端点都已与所需线端点匹配时要执行的操作,这些都是您必须自己做出的选择。NET框架不会为您公开这种固执己见的功能。它将为您提供工具,以便您可以自己实现逻辑。除StreamWriter外,WriteLine将始终使用
\r\n
,即使是在linux上(据我所知)。
File.WriteAllText(MyFile, MyString.ConvertLineendings(Line.CRLF)); // which also does not