2015-11-24 14 views
0

Что такое регулярное выражение для замены жала в тексте с переменным какСтроки заменить Regex

{MERGEFIELD fieldname} в тексте с {DOCPROPERTY fieldname \* MERGEFORMAT}

имя_полем является переменным.

+1

Это не очень понятно ... Вы можете просто использовать [String.Replace] (https: // MSDN. microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx)? –

+0

String.Replace было бы более очевидным ответом. Если вы можете дать еще несколько образцов, вы получите дополнительную помощь. – Nefariis

ответ

0
dim str as string = "{DOCPROPERTY fieldname \* MERGEFORMAT}" 
    str = Regex.Replace(str, Regex.Escape(fieldname), "this is what you want to replace", RegexOptions.IgnoreCase) 

Примечание: вам нужно добавить в строку какой-либо идентификатор, который вы хотите заменить. например, "{DOCPROPERTY [fieldname_NAME] \* MERGEFORMAT}" добавление [] помогает правильно идентифицировать. Вот пример.

dim str as string = "Welcome, [name]" 
    str = Regex.Replace(str, Regex.Escape("[name]"), "Jeff", RegexOptions.IgnoreCase) 
+0

Спасибо zzzzz, но я не думаю, что это сработает для меня, потому что имя поля в тексте всегда отличается от {MERGEFIELD Company}, {MERGEFIELD Tel}, { Почтовый индекс MERGEFIELD}. и т. д. Мне нужно выражение, чтобы игнорировать часть строки между start ("{MERGEFIELD") и end ("}"). –

0

Я бы сначала извлечь имя поля, а затем отформатировать новую строку:

Dim input = "{MERGEFIELD somefieldname}" 
Dim fieldName = Regex.Match(input, "(?<=MERGEFIELD)\w+").Value 
Dim newString = String.Format("{{DOCPROPERTY {0} \* MERGEFORMAT}}", fieldName) 
'newString value is "{DOCPROPERTY somefieldname \* MERGEFORMAT}" 
Смежные вопросы