使用$插值和@编码对字符串进行转义

Nic*_*ore 0 c# string-interpolation html-escape-characters

我正在尝试在插值字符串块中转义一个“”字符,如下所示。

var name = "Mr. Roguers";
var htmlEmail = $@"
    <p>Dear {name},</p>
    <p>Please click this awesome <a href=\"google.com\">link.</a></p>
";
Console.WriteLine(htmlEmail);
Run Code Online (Sandbox Code Playgroud)

我看过很多地方,有人可以使用$和@来提供一些指导或解决方案来避免这种情况。我希望我的代码像这样多行,以便清晰阅读,这就是为什么我有@符号。我也想使用$字符串插值。

此代码无法使用.NET Core 2.2进行编译

我正在自己的解决方案中在Visual Studio中对其进行测试,并且这个简单的示例也在https://dotnetfiddle.net/上进行了测试。

Pet*_*r B 8

使用@时,字符串内的双引号应表示为""

var htmlEmail = $@"
    <p>Dear {name},</p>
    <p>Please click this awesome <a href=""google.com"">link.</a></p>
";
Run Code Online (Sandbox Code Playgroud)

.NET小提琴:https : //dotnetfiddle.net/fESnd1

说明:

@导致编译器从字面上接受字符串,而不是解释它们。随着字符串文字里面的@换行符被允许的,反斜杠\成为一个正常的字符串字符,而不是一个转义字符,导致如@"\r\n"要四个字符的字符串:\r\n。这使得有必要使用另一种方式来包含双引号,即成为""

参考: https : //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/verbatim