Заменить текст с помощью регулярных выражений в MS Word - C # - PullRequest
5 голосов
/ 30 сентября 2009

У меня есть документ Word, который я хочу открыть и заменить все экземпляры номера социального страхования словом «test».

У меня уже есть код для открытия документа. Вот код, который сделает замену. Однако у меня возникли проблемы с использованием регулярных выражений на этом этапе: _wordApp.Selection.Find.Text =; в моем коде. Использование регулярных выражений - это хороший подход или лучший подход? Имейте в виду, я должен соответствовать любому номеру социального страхования ... следовательно: \ b [0-9] {3} - [0-9] {2} - [0-9] {4} \ b ИЛИ \ b [0-9] {3} [0-9] {2} [0-9] {4} \ Ъ

Заранее спасибо ...

object replaceAll = Werd.WdReplace.wdReplaceAll;

_wordApp.Selection.Find.ClearFormatting();
_wordApp.Selection.Find.Text = ;

_wordApp.Selection.Find.Replacement.ClearFormatting();
_wordApp.Selection.Find.Replacement.Text = "test";

_wordApp.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj, ref nullobj,
                ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
                ref replaceAll, ref nullobj, ref nullobj, ref nullobj, ref nullobj);

1 Ответ

5 голосов
/ 01 октября 2009

MS Word имеет встроенную возможность сопоставления с подстановочными знаками. Он не такой мощный, как регулярные выражения, но, похоже, способен сопоставлять простые шаблоны, такие как номера социального страхования.

(Подстановочные знаки <и> соответствуют границам начального и конечного слов.)

_wordApp.Selection.Find.ClearFormatting();
_wordApp.Selection.Find.MatchWildcards = true;
_wordApp.Selection.Find.Text = "<[0-9]{3}-[0-9]{2}-[0-9]{4}>"; // SSN with dashes.

_wordApp.Selection.Find.Replacement.ClearFormatting();
_wordApp.Selection.Find.Replacement.Text = "test";

_wordApp.Selection.Find.ClearFormatting();
_wordApp.Selection.Find.MatchWildcards = true;
_wordApp.Selection.Find.Text = "<[0-9]{9}>"; // SSN without dashes.

_wordApp.Selection.Find.Replacement.ClearFormatting();
_wordApp.Selection.Find.Replacement.Text = "test";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...