3

我有以下代码:

string test = @"1
2
3";

这一行:

Console.WriteLine(test.Replace("\n", "")); //3

打印“3”,而不是“123”,这是我所期望的。为什么这个方法只返回我的字符串的最后一行,否则我怎样才能删除所有换行符?

4

4 回答 4

7

Console.WriteLine(test.Replace("\n", ""));为我返回所有数字。在处理换行符时,您必须知道换行符可能是\r\n,这取决于平台。在这种情况下,你应该使用这个:

test.Replace("\r\n", "")
// or better:
test.Replace(Environment.NewLine, "")

参考“\n”和Environment.NewLine的区别

于 2013-01-24T16:13:54.137 回答
2

如果您编写文本文件的系统和编译或运行它的系统之间的换行符可能不同,您可能想要这样做

string test = @"1
2
3";
Console.WriteLine(test.Replace(@"
", "");

尽力确保字符串文字中的换行符与您要替换的换行符相同。

于 2013-01-24T16:18:52.230 回答
1

逐字字符串使用它所在的源代码文件的行尾。鉴于像 git 这样的源代码控制环境可能会将行尾转换为结束字符串的本机行

string test = @"1
2
3";

可以有任何一组行尾("\r\n""\r""\n")。删除任何这些可能的唯一安全方法是:

Console.WriteLine(test.Replace("\n", "").Replace("\r", ""));

这不假设两个代码片段位于同一个源文件中(因为两个源文件不必具有相同的行结尾)。

于 2013-05-08T15:42:20.863 回答
0

逐字字符串"\r\n"用作换行符,因此替换的结果是"1\r2\r3".

如果您改为使用test.Replace("\r\n", "")它将按预期工作。处理任意数量的情况\r\n使用:test.Replace("\r", "").Replace("\n", ""). 这将适用于\r, \n, 或\r\n作为分隔符。

于 2013-01-24T16:13:36.490 回答