Mat*_*att 81 .net c# string-interpolation
我一直在使用字符串插值并喜欢它,但我有一个问题,我试图在我的输出中包含反斜杠,但我无法让它工作.
我想要的是这样的......
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Run Code Online (Sandbox Code Playgroud)
我想要组合的输出
myDomain\myUserName
Run Code Online (Sandbox Code Playgroud)
我得到的是关于\作为转义字符的语法错误.如果我输入\\那么snytax错误消失了,但输出是myDomain \\ myUsername
如何在插值字符串中包含转义字符?
bir*_*men 89
使用反斜杠(\)转义适用于除大括号外的所有字符.
如果您试图逃避花括号({或}),则必须使用{{或}}按https://msdn.microsoft.com/en-us/library/dn961160.aspx.
...所有出现的双花括号("{{"和"}}")都会转换为单个花括号.
Nha*_*han 73
你可以使用$ @来做到这一点.订单很重要.
var combo = $@"{domain}\{userName}";
Run Code Online (Sandbox Code Playgroud)
Dir*_*uss 12
爱德华多是对的。你可以通过加倍来避开花括号。因此,如果您想将域变量输出为 {mydomain},则需要执行以下操作:
$"{{{domain}}}";
Run Code Online (Sandbox Code Playgroud)
此外,假设当前日期是 2016 年 9 月 1 日,请执行以下操作:
$"The date is {DateTime.Now}";
Run Code Online (Sandbox Code Playgroud)
会输出类似“日期是 2016/09/01 3:04:48 PM”的内容,具体取决于您的本地化。您还可以通过执行以下操作来格式化日期:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
Run Code Online (Sandbox Code Playgroud)
这将输出“日期是 2016 年 9 月 1 日”。内插字符串更具可读性。好的答案爱德华多。
$"{domain}\\\\{user}"\nRun Code Online (Sandbox Code Playgroud)\n工作正常 - 转义像往常一样工作(除了转义时{)。至少在 .NET 4.6 和 Visual\xc2\xa0Studio 14.0.22823 D14REL 上。
如果由于某种原因它不起作用(也许您使用的是旧版本的编译器?),您也可以尝试更明确:
\n$"{domain}{@"\\"}{user}"\nRun Code Online (Sandbox Code Playgroud)\n