在.NET中有一个字符串定义如下:
var str = @"line 1
line 2
line 3";我想将Windows换行符替换为Linux等价物。(用\r\n代替\n)。
我尝试了var str2 = str.replace(Environment.NewLine, "\n");,但是结果是完全相同的字符串(str == str2为true)。
我猜Windows在字符串中用\r\n代替了\r\n,实际上没有改变任何东西。
我尝试了var str2 = str.replace(Environment.NewLine, '\n');,但是给出了编译错误,因为一个参数是字符串,另一个参数是char。
我甚至尝试过var str2 = str.replace(Environment.NewLine, '\n'.ToString());,但这也不起作用。
想法?
发布于 2014-01-16 03:02:49
str在替换后等于str2,因为原始字符串一开始不包含\r\n。
看这个fiddle。
多行字符串使用\n。
发布于 2014-01-16 03:47:04
看起来,这在很大程度上取决于您正在使用的工具。以及如何键入或粘贴文字。
带有换行符的文字字符串似乎根据工具的不同而变化。人们可能会担心Environment.NewLine在工具上可能也会有所不同(除了机器),但我还没有说明这一点。
您还可以复制和粘贴一个与工具中的“enter”/“breaks”不同的文字断线。
有趣的东西!:)
当像这样计算时,跨平台的安全赌注是在单行字符串中使用那些文字(如C#中的"\r\n“),而不要在编辑器中使用换行。
或者,如果对更多数据更方便的话,可以从文件中加载。
将其放到VS中,然后使用DotNetFiddle并看到不同的结果:
var strMyString = @"start
asdf
end";
byte[] ASCIIValues = System.Text.Encoding.ASCII.GetBytes(strMyString);
string strENL = "";
foreach (byte b in ASCIIValues)
{
strENL += b + " ";
}
Console.WriteLine("strMyString is as ascii: " + strENL);
/////////
Console.WriteLine("\n\n");
var str2 = strMyString.Replace("\r","");
Console.WriteLine("string 2 matches == " + (strMyString == str2).ToString());
var str3 = strMyString.Replace("\n", "");
Console.WriteLine("string 3 matches == " + (strMyString == str3).ToString());
var str4 = strMyString.Replace(Environment.NewLine,"\n");
Console.WriteLine("string 4 matches == " + (strMyString == str4).ToString());
var str5 = strMyString.Replace(Environment.NewLine, "\r");
Console.WriteLine("string 4 matches == " + (strMyString == str5).ToString());
/////////
Console.WriteLine("\n\n");
strENL = "";
ASCIIValues = System.Text.Encoding.ASCII.GetBytes(Environment.NewLine);
foreach (byte b in ASCIIValues)
{
strENL += b;
}
Console.WriteLine("Environment.NewLine is as ascii: " + strENL);
/////////
Console.WriteLine("\n\n");
Console.WriteLine((Environment.NewLine == "\n").ToString());
Console.WriteLine((Environment.NewLine == "\r").ToString());
Console.WriteLine((Environment.NewLine == "\r\n").ToString()); https://stackoverflow.com/questions/21152515
复制相似问题