使用 Autohotkey 替换剪贴板中的变音符号
using Autohotkey to replace diacritics accents in clipboard
我正在尝试在 Autohotkey 中编写一个脚本,它将获取当前突出显示的单词,将其复制到剪贴板,然后用非重音版本替换重音字符。例如,如果单词 honorábilem 在剪贴板中,我想将其更改为 honorabilem.
这是我试过的:
F1::
SetTitleMatchMode RegEx
clipboard =
Send, ^c
wordToParse := %clipboard%
wordToParse = RegExReplace(wordToParse,"á","a") ; also tried this: StringReplace, clipboard, clipboard, á, a, All
MsgBox, % clipboard
但是剪贴板的内容没有改变。 á 永远不会被 a 取代。感谢任何帮助。
剪贴板的内容不会改变(发送 CTRL+C 改变之后)因为你根本不之后更改剪贴板的内容。
你犯的另一个错误是给变量赋值错误。
我假设您不知道 =
and :=
.
之间的区别
不同之处在于,使用 =
分配值已弃用旧版 AHK,永远不应使用。您正在将文字文本分配给变量。与分配评估某些表达式的结果相反,这是 :=
所做的。
此行 wordToParse = RegExReplace(wordToParse,"á","a")
将文字文本分配给该变量,而不是调用 RegExReplace()
函数并将其结果分配给变量。
此外,如果您不使用正则表达式,则没有理由替换正则表达式。
StrReplace()
函数就是你想要的。
然后还有在表达式中使用遗留语法:
wordToParse := %clipboard%
通过将变量包装在 %
中来引用变量是您在旧语法中所做的。
但是因为你没有这样做,你正在使用 :=
,正如你应该的那样,只是放弃 %
s.
修改后的脚本:
F1::
;This does nothing for us, removed
;SetTitleMatchMode RegEx
;Empty clipboard
Clipboard := ""
;Switched to SendInput, it's documented as faster and more reliable
SendInput, ^c
;Wait for the clipboard to contain something
ClipWait
wordToParse := Clipboard
wordToParse := StrReplace(wordToParse, "á", "a")
;Since you want to display the contents of the clipboard in
;a message box, first we need to set what we want into it
Clipboard := wordToParse
MsgBox, % Clipboard
return
我正在尝试在 Autohotkey 中编写一个脚本,它将获取当前突出显示的单词,将其复制到剪贴板,然后用非重音版本替换重音字符。例如,如果单词 honorábilem 在剪贴板中,我想将其更改为 honorabilem.
这是我试过的:
F1::
SetTitleMatchMode RegEx
clipboard =
Send, ^c
wordToParse := %clipboard%
wordToParse = RegExReplace(wordToParse,"á","a") ; also tried this: StringReplace, clipboard, clipboard, á, a, All
MsgBox, % clipboard
但是剪贴板的内容没有改变。 á 永远不会被 a 取代。感谢任何帮助。
剪贴板的内容不会改变(发送 CTRL+C 改变之后)因为你根本不之后更改剪贴板的内容。
你犯的另一个错误是给变量赋值错误。
我假设您不知道 =
and :=
.
之间的区别
不同之处在于,使用 =
分配值已弃用旧版 AHK,永远不应使用。您正在将文字文本分配给变量。与分配评估某些表达式的结果相反,这是 :=
所做的。
此行 wordToParse = RegExReplace(wordToParse,"á","a")
将文字文本分配给该变量,而不是调用 RegExReplace()
函数并将其结果分配给变量。
此外,如果您不使用正则表达式,则没有理由替换正则表达式。
StrReplace()
函数就是你想要的。
然后还有在表达式中使用遗留语法:
wordToParse := %clipboard%
通过将变量包装在 %
中来引用变量是您在旧语法中所做的。
但是因为你没有这样做,你正在使用 :=
,正如你应该的那样,只是放弃 %
s.
修改后的脚本:
F1::
;This does nothing for us, removed
;SetTitleMatchMode RegEx
;Empty clipboard
Clipboard := ""
;Switched to SendInput, it's documented as faster and more reliable
SendInput, ^c
;Wait for the clipboard to contain something
ClipWait
wordToParse := Clipboard
wordToParse := StrReplace(wordToParse, "á", "a")
;Since you want to display the contents of the clipboard in
;a message box, first we need to set what we want into it
Clipboard := wordToParse
MsgBox, % Clipboard
return