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

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

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

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

2 ответа2

0

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

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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .