Что я пытаюсь сделать, это написать приложение, которое может найти & заменить все вхождения данной строки в документе 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. Любая идея, если есть другой вариант для решения этого конкретного сценария?
I удалили мой ответ из-за того, что ваше отношение было крайне неуважительным и помогло недостойным. Не ожидайте от меня большей помощи. – varocarbas