2013-12-13 4 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)  

«Названия Работника» заменяется значением адресатом переменной , Однако он не заменяет скобки.

Как заменить скобку так, чтобы было добавлено только значение адресата? ТИА

ответ

1

Вам нужно положить "\\ (" и "\\)". Ответ @denims, вероятно, частично правильный, но сам C# интерпретирует строку \ в строке. Вероятно, вам нужно, чтобы \ интерпретировался методом, который вы вызываете.

При этом в документации по методу не указано, почему это происходит в первую очередь.

+0

спасибо. Да, это так. Фактически @AndrewBacker правильно понял его комментарий к ответу Denim – 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

извините, но это вызвало ошибку: Ошибка Непризнанная escape-последовательность – vishnu

+2

используйте стенографическую строку. «\» также является escape-символом в C#. Вы можете использовать '@" \ (.... "' или бежать вручную, как '' \\ (name ... \\) "' –

+0

спасибо @AndrewBacker, который сделал это – vishnu

Смежные вопросы