在 C# 上,转义大括号和后面的反斜杠
本文关键字:转义 | 更新日期: 2023-09-27 18:32:12
我正在尝试格式化文本,以便我可以提供模板一些RFT文本。
我的字符串使用字符串格式化器声明为:
var fullTitleString = string.Format(
CultureInfo.CurrentCulture,
"{{''Test",
title,
filterName);
但是我一直获得一个字符串作为"{''Test"。使用单个反斜杠会导致错误,因为它无法理解 ''T 转义字符。
执行 @"{{''Test" 也会生成 "{''Test"。我已经查看了MSDN文档和其他问题,他们告诉使用另一个反斜杠作为转义字符,但它似乎不起作用。
这里有两个逃生的宝贝:
1. 转义字符串文字
在 c# 字符串中,反斜杠 ('
) 用作特殊字符,需要由另一个'
转义。因此,如果生成的字符串看起来像''uncpath'folder
则字符串文本应var s = "''''uncpath''folder"
。
2. 转义格式字符串
string.Format
使用大括号作为占位符,因此您需要使用额外的大括号来转义它们。
所以假设你有
string title = "myTitle";
string filterName = "filter";
然后
string.Format("{{''Test {0}, {1}}}", title, filterName);
结果在
{'Test myTitle, filter}
如果你想要在开头有两个大括号,你需要在你的格式字符串中放四个:
string.Format("{{{{''Test {0}, {1}}}", title, filterName);
结果在
{{'Test myTitle, filter}
如果您提供一个清晰的示例来说明您要实现的目标,我可能会告诉您正确的格式字符串。
旁注:在 C# 6 中,最后一个示例也可以$"{{{{''Test {title}, {filterName}}}"
(使用字符串内插而不显式调用 string.Format
)
注意: Visual Studio 调试器始终显示未转义的字符串文本。因此,如果您声明类似 string s = "''"
的字符串,您将在调试器窗口中看到两个反斜杠,但如果您Console.WriteLine(s)
则只会将一个反斜杠写入控制台。