2013-12-13 47 views
0

我试图替换字符串包含括号在我的C#电子邮件的脚本与给定的变量括号。我的一个函数内部代码片段是这样的:替换字符串,包括C#

MailDefinition md = new MailDefinition(); 

md.From = "[email protected]";  
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("[email protected]", replacements, body, new System.Web.UI.Control()); 

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

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

“雇员的姓名”得到由收件人变量的值取代。但是,它并不取代括号。

我该如何更换括号以便只添加收件人的值? TIA

回答

1

你需要把 “\\(” 和 “\\)”。 @denims答案可能是部分正确,但C#本身解释\中的字符串中。您可能需要用您调用的方法来解释\。

认为方法的文档并不表示这是为什么首先发生。

+0

感谢。是的它做到了。其实@AndrewBacker得到它首先正确谈了他对牛仔布的回答 – vishnu

+0

是啊,我打字评论时出现了:) – Hans

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) 
+0

对不起,但它产生了一个错误:错误无法识别的转义序列 – vishnu

+2

使用逐字字符串。 “\”也是C#中的转义字符。你可以用'@“\(....”'或逃避手动像'“\\(名... \\)”' –

+0

感谢@AndrewBacker认为这样做是 – vishnu