替换C#中包含括号的字符串

时间:2013-12-13 06:00:04

标签: c# regex

我正在尝试使用给定变量替换包含C#email脚本中括号的字符串。我在函数中的代码片段如下:

MailDefinition md = new MailDefinition();

md.From = "testmail@test.com";    
string addressee = salutation;

ListDictionary replacements = new ListDictionary();
replacements.Add("\n", "<br />");
replacements.Add("(Name of Employee)", addressee)       
string body = EmployeeQuery.getEmailMessageByCategory(category, subcategory);
MailMessage msg = md.CreateMailMessage("admin@test.com", replacements, body, new System.Web.UI.Control());

主要问题是代码的这一部分:

replacements.Add("(Name of Employee)", addressee)    

“员工姓名”被替换为addressee变量的值。但是,它不会替换括号。

如何替换括号以便只添加addressee的值? TIA

2 个答案:

答案 0 :(得分:1)

使用此:

replacements.Add("\\(Name of Employee\\)", addressee)

// \ acts as escape charecter, supressing the special meaning of next charecter
// (XYZ) matches XYZ  as a group
// \\(XYZ\\) matches (XYZ)

答案 1 :(得分:1)

您需要输入“\\(”和“\\)”。  @denims的答案可能部分正确,但c#本身解释了字符串中的\。您可能需要通过您正在调用的方法来解释\。

那说方法文档并没有说明为什么会发生这种情况。