C#6 中的长字符串插值行不支持 Tab、CR 和 LF
Long string interpolation lines in C#6 don't support Tab,CR and LF
我尝试在 C#6 中使用带制表符的字符串插值 $""
var name="My Name";
var text =$"\t\t{name}";
它工作正常,标签 \t 已解决。
当尝试使用
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,这是长字符串插值的限制吗
您在第二个示例中使用了逐字字符串,因此 \t
被转义了。与字符串插值无关
如果您想使用制表符,请不要使用逐字字符串。您可以使用 "+"
的字符串连接来连接多行
您在该字符串前面有逐字修饰符 @
,因此您的制表符将被取消转义并被视为普通文本。如果你想将它们包含在字符串中,那么你可以将字符括在 curley 括号中(因为你还使用 $
字符串插值修饰符)所以它们被视为制表符(与回车相同 return 和换行符):
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
";
我尝试在 C#6 中使用带制表符的字符串插值 $""
var name="My Name";
var text =$"\t\t{name}";
它工作正常,标签 \t 已解决。
当尝试使用
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,这是长字符串插值的限制吗
您在第二个示例中使用了逐字字符串,因此 \t
被转义了。与字符串插值无关
如果您想使用制表符,请不要使用逐字字符串。您可以使用 "+"
您在该字符串前面有逐字修饰符 @
,因此您的制表符将被取消转义并被视为普通文本。如果你想将它们包含在字符串中,那么你可以将字符括在 curley 括号中(因为你还使用 $
字符串插值修饰符)所以它们被视为制表符(与回车相同 return 和换行符):
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
";