Как мне найти и заменить одно слово на несколько разных слов?

401
exsonic01

Используя MS Word или Notepad ++, я хочу найти и заменить один словарь на несколько разных синонимов.

Например, из моего текста я обнаружил, что определенное слово AAAA появляется слишком часто. Итак, я хочу изменить этот AAAA на BBBB, CCCC или DDDD. Как найти и заменить «красивый» на «удивительный», «красивый» или «заманчивый».

Это может быть случайным образом (60% от BBBB, 30% от CCCC и 10% от DDDD, случайным образом) или это может быть порядок (замените на BBBB, затем замените следующий на CCCC, затем замените следующий на DDDD, затем замените следующий к BBBB снова ...)

Можно ли выполнить такой поиск и замену из MS Word или Notepad ++? Было бы лучше написать сценарий или макрос для выполнения такого действия?

0

2 ответа на вопрос

0
harrymc

Notepad ++ не имеет случайной замены или даже циклической замены, а также регулярных выражений. Это не инструмент программирования, как и Word.

Написание скрипта / макроса намного лучше. Если вы упоминаете Word, то VBA, безусловно, может это сделать. Вы можете быстро начать с записи сеанса, в котором вы делаете такие замены, а затем расширить его с помощью цикла.

Хорошей отправной точкой является статья Microsoft: автоматизируйте задачи с помощью Macro Recorder .

Спасибо за ваши рекомендации, я уже читаю. exsonic01 5 лет назад 0
0
Rich Michaels

Попробуйте это ... это должно дать вам начало.

Sub FindReplaceSynonyms() Dim doc As word.Document, rng As word.Range Dim FindStr As String, SynonymStr As String Dim SplitStr() As String, i As Long Set doc = ActiveDocument Set rng = doc.Content FindStr = "beautiful" SynonymStr = "astonishing,pretty,alluring" SplitStr = Split(SynonymStr, ",") With rng.Find .ClearFormatting .Format = False .Forward = True .MatchCase = True .Text = FindStr .Wrap = wdFindStop .Execute Do While .found rng.Text = SplitStr(i) i = i + 1 If i > UBound(SplitStr) Then i = 0 rng.Collapse wdCollapseEnd .Execute Loop End With MsgBox "Action Complete", vbExclamation, "Custom Replace" End Sub 
Большое спасибо, я проверил, и это прекрасно работает! exsonic01 5 лет назад 0

Похожие вопросы