使用 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 当然可以做到这一点。您可以通过录制执行此类替换的会话来快速启动,然后使用循环对其进行扩展。
微软的文章是一个很好的起点: 使用宏录制器自动执行任务。