I have the following code:
string test = @"1
2
3";
这行代码:
Console.WriteLine(test.Replace("\n", "")); //3
输出的是"3"而不是我期望的"123"。为什么这个方法只返回字符串的最后一行,如何去除所有换行符?
I have the following code:
string test = @"1
2
3";
Console.WriteLine(test.Replace("\n", "")); //3
输出的是"3"而不是我期望的"123"。为什么这个方法只返回字符串的最后一行,如何去除所有换行符?
Console.WriteLine(test.Replace("\n", ""));
返回给我所有的数字。在处理换行符时,您必须注意换行符可能是\r\n
,这取决于平台。在这种情况下,您应该使用以下内容:
test.Replace("\r\n", "")
// or better:
test.Replace(Environment.NewLine, "")
UTF-16
,请参考此文档页面。C#支持两种形式的字符串字面量:常规和逐字。这两种形式都使用相同的编码方式。 - Zbigniew如果你在编写文本文件的系统和编译或运行它的系统之间换行符可能不同的情况下,你可能需要进行以下操作:
string test = @"1
2
3";
Console.WriteLine(test.Replace(@"
", "");
尽力确保字符串文字中的换行符与您要替换的换行符相同。
原样字符串使用其所在源代码文件的行尾。鉴于像git这样的源控制环境可能会将行尾转换为本地行尾,因此该字符串也会受到影响。
string test = @"1
2
3";
可能会有任何一组行尾("\r\n"
,"\r"
或"\n"
)。唯一安全的删除任何可能的行尾的方法是:
Console.WriteLine(test.Replace("\n", "").Replace("\r", ""));
verbatim字符串使用"\r\n"
作为换行符,因此您替换的结果是"1\r2\r3"
。
如果您改用test.Replace("\r\n", "")
,它将按预期工作。要处理任意数量的\r
或\n
的情况,请使用:test.Replace("\r", "").Replace("\n", "")
。这将适用于\r
、\n
或\r\n
作为分隔符的情况。
test = test.Replace.Trim()
这样的操作会发生什么? - MethodMan