我试图在带有标签的C#6中使用字符串插值$“”
var name="My Name";
var text =$"\t\t{name}";
它工作正常,并且选项卡\ t已解决。
尝试使用Long string interpolation lines
var name = "myname";
var text = $@"\t\t{name}
tab and name is in a Long string interpolation \r\n
";
Console.WriteLine(text);
输出
\t\tmyname
tab and name is in a Long string interpolation \r\n
标签\ t,\ r和\ n无法解析
所以我不得不使用string.Format()来解决此问题。
问题:
这是长字符串插值中的一个限制,因为它不支持c#6(甚至c#7)中的\ t \ r \ n
答案 0 :(得分:3)
您在第二个示例中使用了逐字字符串,因此\t
被转义。与字符串插值无关。
如果要使用制表符,请不要使用逐字字符串。您可以使用带有"+"
答案 1 :(得分:1)
该字符串前面有逐字修饰符@
,因此您的制表符不会被转义并视为普通文本。如果要将它们包括在字符串中,则可以将字符括在圆括号中(因为您还使用了$
字符串插值修饰符),因此将它们视为制表符(与回车符相同)和换行符):
var name = "myname";
var text = $@"{"\t\t"}{name}
tab and name is in a Long string interpolation {"\r\n"}
";
Console.WriteLine(text);
或者,因为它是逐字字符串,所以您只需在想要字符串中的那些字符的位置按 Tab (或 Enter )键即可。
此字符串与上面的字符串相同:
var text = $@" {name}
tab and name is in a Long string interpolation
";