我如何查找并将一个单词替换为多个不同的单词?

我如何查找并将一个单词替换为多个不同的单词?

使用 MS Word 或 Notepad++,我希望查找并将单个词汇替换为多个不同的同义词。

例如,在我的文本中,我发现某个单词 AAAA 出现的频率太高。因此,我希望将这个 AAAA 更改为 BBBB、CCCC 或 DDDD。例如,查找并将“beautiful”替换为“astonishing”、“pretty”或“alluring”。

它可以是随机方式(60%的BBBB、30%的CCCC和10%的DDDD,随机)或者可以按顺序(替换为BBBB,然后将下一个替换为CCCC,然后将下一个替换为DDDD,然后再次将下一个替换为BBBB......)

是否可以通过 MS Word 或 Notepad++ 执行此类查找和替换?编写脚本或宏来执行此类操作是否更好?

答案1

尝试一下...它应该能给你一个开始。

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

答案2

Notepad++ 没有随机替换,甚至没有循环替换,正则表达式也没有。它不是编程工具,Word 也不是。

编写脚本/宏要好得多。如果您提到 Word,那么 VBA 当然可以做到这一点。您可以通过录制执行此类替换的会话来快速启动,然后使用循环对其进行扩展。

微软的文章是一个很好的起点: 使用宏录制器自动执行任务

相关内容