regex 如何用AHK数组中的数字替换文本中的数字?

sqougxex  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(130)

content = 10,19,2023,19,6,2,9(这是一个变量数组)
要修改的数字的句子:
于2023年7月4日至6日,我们出席了10场会议,包括5场讨论、25场展览及3场简报会。
修改后的句子:
从7月9日至9日,我们参加了9次会议,包括9次讨论、9次展览和9次情况通报。
问题是:只有数组中的最后一个数字才能正确应用。你知道如何修复我的代码吗?谢谢

^!2::
    ClipSaved := ClipboardAll
    Clipboard :=
    Send, ^x
    ClipWait, 2
    CutText := Clipboard
    Clipboard := ClipSaved
    regex := "\b\d+\b"
    replacedText := CutText
    Loop % copiedNumbers.Length()
    {
    replacedText := RegExReplace(replacedText, regex, copiedNumbers[A_Index])
    }
    Clipboard := replacedText
    Send, ^v
return
hzbexzde

hzbexzde1#

你可以在ahk v2中这样实现它:

variable := "10,19,2023,19,6,2,9"
text := "From 4 to 6 July 2023, we attended 10 meetings, including 5 discussions, 25 exhibits and 3 briefings."

replacedText := RegExReplace(text, "(.*?)\d+", "$1*")

for i, v in StrSplit(variable, ",") {
    replacedText := RegExReplace(replacedText, "(.*?)\*(.*)", "$1" . v . "$2")
}

MsgBox(replacedText)

你用“*”替换原始字符串中所有出现的数字,然后为“变量数组”中的每个数字替换一个星星,直到没有数字留下。然而,这并不能解释字符串和变量数组中数字数量的不匹配。

相关问题