0

我有一个奇怪的情况。当我像这样逐字执行字符串时:

string str = @"Hello 
World"

该字符串是用“\r\n”创建的,因此它是“Hello \r\nWorld”。我希望它只用新行创建,没有回车,所以它只是“\n”。

现在,我意识到我可以做到:

str = str.Replace("\r", "")

但是字符串是一个 const 变量,特别是因为我不想要大量的实例化和操作来提高性能(无论多么小)等

任何人都知道我该如何做到这一点,我可以编写多行文本存储为一个没有“\r”的 const 字符串,它仍然显示为格式化且易于在代码中阅读?

4

1 回答 1

1

是您的编辑器对您执行此操作,而不是 C#。

如果您在十六进制编辑器中查看您的代码,您会看到“string str = @"Hello” 行以 \r\n 结尾,而不仅仅是 \n。

在 Windows 上,默认情况下,返回是两个字符 \r\n,而不是像在 Mac 上的 \n 一样。

大多数编辑都可以选择更改此设置。但是,最终会在您不查看时将文件切换回对您使用 \r\n 。

该语言没有提供解决此问题的干净方法。只需使用非逐字字符串或进行替换。

于 2020-04-24T21:56:11.123 回答