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/上进行了测试。
使用@时,字符串内的双引号应表示为"":
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