在一个原样字符串字面量中输入新行

20

我有一个字符串如下:

string example = @"string str = ""forty-two"";
char pad = '*';

输出结果如下所示:

string str = "forty-two"; char pad = '*';
我需要以下输出:

我需要的输出如下:

string str = "forty-two"; 
char pad = '*';

如何在此原始字符串文字中的“char pad”之前插入换行符


1
你的源代码好像缺少一个 "。另外,你具体是怎么输出它的?在网页上吗? - Mr Lister
是的,比如在一个标签中。 - A. F. M. Golam Kibria
HTML 标准不关心空格,这可能就是为什么您没有看到预期结果的原因。 - Alex
2
@A.F.M.GolamKibria,您可以在verbatim字符串内使用插值,例如:string example = $@"string str = ""forty-two"";{("\n")}char pad = '*';";这里是一个code snippet - Mina Gerges
1个回答

15

在逐字字符串字面值中,除了两个双引号之外,所有的转义字符都被逐字解释,因此如果您想要一个两行的字符串,您必须手动将其写成两行:

string example = @"string str = ""forty-two"";
char pad = '*';";

Console.WriteLine(example); // string str = "forty-two";
                            // char pad = '*';

msdn的文章中可以了解到:

像@"c:\Foo"这样的字符串字面量称为逐字字符串。这基本上意味着,“在遇到下一个引号字符之前,请不要对字符应用任何解释”。因此,逐字字符串文字可以包含反斜杠(而不必将它们加倍)甚至包括行分隔符。要在逐字文字字面值中获取双引号("),你只需要将其加倍即可,例如@"My name is ""Jon"""表示字符串My name is "Jon"。包含行分隔符的逐字字符串文字还将包含该行开头的空格,因此我通常不会在空格很重要的情况下使用它们。但是,在源代码中包含 XML 或 SQL 时非常方便,另一个典型用途(不需要行分隔符)是指定文件系统路径。

值得注意的是,它不会以任何方式影响字符串本身:作为逐字字符串文字指定的字符串与适当转义的正常字符串文字指定的字符串完全相同。调试器有时会选择将字符串显示为逐字字符串文字——这仅仅是为了方便查看字符串内容而无需担心转义。

[作者:Jon Skeet]


我从原帖中了解到他们知道这一点,但是他们的抱怨是输出在同一行上。 - Mr Lister
输出在同一行。 - A. F. M. Golam Kibria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接