C#6 中的长字符串插值行不支持 Tab、CR 和 LF

2024-04-17

我尝试在 C#6 中使用制表符进行字符串插值 $""

 var name="My Name";
 var text =$"\t\t{name}";

它工作正常,制表符 \t 已解决。

当尝试使用时长字符串插值线 https://stackoverflow.com/questions/31764898/long-string-interpolation-lines-in-c6

      var name = "myname";
      var text = $@"\t\t{name}
                    tab and name  is in a Long string interpolation \r\n
       ";
    Console.WriteLine(text);

output

     \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


你有逐字修饰符@位于该字符串前面,因此制表符将不会转义并被视为普通文本。如果您想将它们包含在字符串中,那么您可以将这些字符括在大括号中(因为您还使用了$字符串插值修饰符),因此它们被视为制表符(与回车符和换行符相同):

    var name = "myname";
    var text = $@"{"\t\t"}{name}
            tab and name  is in a Long string interpolation {"\r\n"}
";
    Console.WriteLine(text);

Alternatively, since it's a verbatim string, you can just press Tab (or Enter) keys where you want those characters in the string.

该字符串与上面的字符串相同:

    var text = $@"      {name}
            tab and name  is in a Long string interpolation 

";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#6 中的长字符串插值行不支持 Tab、CR 和 LF 的相关文章

随机推荐