如何在C#6中使用string插值使用转义字符?
我一直在使用string插值和爱它,但是我有一个问题,我试图在我的输出中包含一个反斜杠,但是我不能得到它的工作。
我想要的是这样的
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\{userName}"
我想要组合的输出
myDomain\myUserName
我得到的是关于\是一个转义字符的语法错误。 如果我放入\\然后snytax错误消失了,但输出是myDomain \\ myUsername
如何在一个插入string中包含转义字符?
用反斜杠( \
)转义除了大括号之外的所有字符。
如果您尝试转义大括号( {
或}
),则必须使用{{
或}}
每个https://msdn.microsoft.com/en-us/library/dn961160.aspx 。
…所有出现的双花括号(“{{”和“}}”)被转换为单个大括号。
您可以使用$ @来做到这一点。 顺序很重要。
var combo = $@"{domain}\{userName}";
$"{domain}\\{user}"
工作正常 – 转义工作像往常一样(转义{
除外)。 至less在.NET 4.6和VS 14.0.22823 D14REL上。
如果由于某种原因无法正常工作(也许您使用的是旧版本的编译器?),那么您也可以尝试更加明确:
$"{domain}{@"\"}{user}"
如果我没有误解。 解决scheme非常简单
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
我同意birdamongmen答案以及那里提供的很好的参考。 希望对你有帮助。 我的5美分
爱德华多是正确的。 你加倍地摆脱大括号。 因此,如果你想输出域variables为{mydomain},你需要做:
$"{{{domain}}}";
此外,假设目前的date是2016年9月1日,这样做:
$"The date is {DateTime.Now}";
会输出类似于“date为2016/09/01 3:04:48 PM”,取决于您的本地化。 您也可以通过执行以下格式来设置date:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
将输出“date为2016年9月1日”。 插值string更可读。 好的回答爱德华多。