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

String Escaping With $ Interpolation and @ Encoding

我正在尝试转义如下所示的内插字符串块中的 " 字符。

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);

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

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

我正在 Visual Studio 我自己的解决方案中测试它,还有这个简单的例子我在 https://dotnetfiddle.net/

上测试它

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

var htmlEmail = $@"
    <p>Dear {name},</p>
    <p>Please click this awesome <a href=""google.com"">link.</a></p>
";

.NET Fiddle: https://dotnetfiddle.net/fESnd1

解释:

@ 使编译器按字面意思获取字符串而不是解释它们。允许在字符串文字中使用 @ 换行符,并且反斜杠 \ 变为普通字符串字符而不是转义字符,导致例如@"\r\n" 是一个包含四个字符的字符串:\r\n。这使得有必要使用另一种方式来包含双引号,即成为 "".

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