当前位置: 首页 > 知识库问答 >
问题:

如何在C# 6中使用带有字符串插值的转义字符?

利稳
2023-03-14

我一直在使用字符串插值并喜欢它。但是,我有一个问题,我试图在输出中包含反斜杠,但我无法让它工作。

我想要这样的东西...

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"

我希望组合的输出为:

myDomain\myUserName

我收到一个关于\是转义字符的语法错误。如果我输入\\,则语法错误消失,但输出是myDomain\\myUsername。

如何在插值字符串中包含转义字符?

共有3个答案

濮阳俊明
2023-03-14

爱德华多是对的。你可以通过折叠来避开花括号。因此,如果要将域变量输出为{mydomain},则需要执行以下操作:

$"{{{domain}}}";

此外,假设当前日期是2016年9月1日,这样做:

$"The date is {DateTime.Now}";

会根据您的本地化输出类似“日期为2016/09/01 3:04:48 PM”的内容。您还可以通过执行以下操作格式化日期:

$"The date is {DateTime.Now : MMMM dd, yyyy}";

它将输出“日期是2016年9月1日”。插值字符串可读性更好。回答得好爱德华多。

靳茂
2023-03-14

您可以使用$@来完成此操作。顺序很重要。

var combo = $@"{domain}\{userName}";

最初的问题特别提到了C#6。正如所评论的,C#8不再关心顺序。

南门茂才
2023-03-14

带反斜杠转义(\)适用于除大括号外的所有字符。

如果您试图转义花括号({}),则必须使用{{}}每个$-字符串插值(C#参考)

...所有出现的双大括号(“{{”和“}}”)都将转换为单个大括号。

 类似资料:
  • 在普通字符串中,我可以用反斜杠转义: 在字符串文字中有可能做同样的事情吗?反斜杠不再是转义字符: 到目前为止,我看到的唯一解决方案是字符串连接,这非常难看,以及嵌套插值,这开始变得有点可笑:

  • 问题内容: 我正在读取Java中的源文件,但是当我打印它(sysout)时,转义的字符不再转义。如何在Java中转义像和这样的字符? 问题答案: 您应该使用Apache Commons Text中的类(您也可以在Apache Commons Lang3中找到该类,但已弃用该类)。您会发现Apache Commons中还有许多其他产品可能对您在Java开发中遇到的其他问题有用,因此您不必重新发明轮子

  • 问题内容: 手动创建JSON数据时,应如何转义字符串字段?我应该用什么样的Apache Commons Lang中的,或者我应该使用? 问题是,当我使用时,它不会转义引号,并且当我将整个字符串包装在一对s中时,将生成格式错误的JSON。 问题答案: 理想情况下, 找到一种使用您的语言的JSON库 ,您可以向该 库 提供一些适当的数据结构, 并使它担心如何转义 。它会让您保持头脑清醒。如果出于某种原

  • 问题内容: 考虑以下代码 问题在于,SQL语句中的引号没有被转义。如果我使用PHP编程,则在将字符串插入SQL查询之前,将使用sqlite_escape_string之类的函数对字符串进行转义,但是我似乎找不到C ++中的等效函数。我可以构建自己的sqlite_escape_string之类的函数,但我确定必须已经编写/测试了一个… C ++是否有sqlite_escape_string()等效函

  • 问题内容: 如果我有一个字符串变量: 我想在每一个前面加一个转义字符和 变量中 (即 未 竟逃脱字符),我该怎么做? 问题答案: 我不是在这里要求优雅,但我 认为 它可以满足您的要求(如果我误会了,请纠正我): 输出

  • 问题内容: 我正在寻找SQL Server 的替代方案。是我最好的选择,还是可以使用另一种替代功能? 的替代方法也将很有用。 问题答案: 还不够,但是PHP的mssql软件包没有提供任何不错的选择。丑陋但完全通用的解决方案是将数据编码为十六进制字节串,即 摘要如下: 等效为。