2013-09-10 3 views
0

Что я пытаюсь сделать, это написать приложение, которое может найти & заменить все вхождения данной строки в документе Microsoft Word.Найти и заменить Word Interop Whole Word Matching

Что я решил сделать до сих пор, это использовать сборку Microsoft.Office.Interop.Word. Это работает, но не совсем так, как мне хотелось бы. Проблема в том, что он подбирает подстроки и заменяет их.

Вот мой код до сих пор:

foreach (DataRow drCrossWalkItem in dtCrossWalk.Rows) 
{ 
    foreach (Word.Range myStoryRange in doc.StoryRanges) 
    { 
     myStoryRange.Find.MatchWholeWord = true; 
     myStoryRange.Find.MatchPrefix = false; 
     myStoryRange.Find.MatchSuffix = false; 
     myStoryRange.Find.Text = drCrossWalkItem["strOldValue"].ToString(); 
     myStoryRange.Find.Replacement.Text = drCrossWalkItem["strNewValue"].ToString(); 
     myStoryRange.Find.Wrap = Word.WdFindWrap.wdFindContinue; 
     myStoryRange.Find.Execute(Replace: Word.WdReplace.wdReplaceAll); 
    } 
} 
doc.SaveAs2(strFinalPath); 
doc.Close(ref missing, ref missing, ref missing); 
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(doc); 

Так что прекрасно работает в большинстве случаев, но вопрос, который я имею в этом следующем примере:

Document Text: 
test_item_one 
test_item_one_two_three 

сказать, что я хочу, чтобы заменить «test_item_one» с «привет» - хорошо в моей текущей программе, она заменяет обе строки следующим образом:

Document Text: 
hello 
hello_two_three 

Очевидно, что совпадение «целое слово» не включает _. Это то же самое, как если бы вы попытались найти/заменить в Microsoft Word. Любая идея, если есть другой вариант для решения этого конкретного сценария?

+0

I удалили мой ответ из-за того, что ваше отношение было крайне неуважительным и помогло недостойным. Не ожидайте от меня большей помощи. – varocarbas

ответ