replace - 使用 Autohotkey 替换剪贴板中的变音符号
问题描述
我正在尝试在 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
但剪贴板的内容不会改变。á永远不会被替换为. 感谢任何帮助。
解决方案
剪贴板的内容不会改变(从发送CTRL+改变之后C),因为在那之后您根本不会改变剪贴板的内容。
您犯的另一个错误是错误地为变量赋值。
我假设您不知道 和 之间的=
区别:=
。
不同之处在于,使用=
分配值已被弃用,不应使用旧 AHK。您正在将文字文本分配给变量。与分配评估某些表达式的结果相反,这是做什么:=
的。
此行将wordToParse = RegExReplace(wordToParse,"á","a")
文字文本分配给该变量,而不是调用RegExReplace()
函数并将其结果分配给变量。
此外,如果您不使用正则表达式,则没有理由替换正则表达式。功能就是你想要的
。StrReplace()
然后还有在表达式中使用遗留语法:
wordToParse := %clipboard%
通过包装变量来引用变量%
是你在遗留语法中所做的。
但是,由于您没有这样做,:=
因此您应该使用 s,而应该放弃%
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
推荐阅读
- qt - 使用专有编解码器构建 QtWebEngine 5.9.1
- python - 在 Ubuntu 18.04 上安装 OpenCV 3.4.2
- python - 抓取修改后的文件名python
- python - Python3 TypeError:采用 1 个位置参数,但给出了 2 个
- javascript - 使用 JS 添加选择>选项作为列表项
- android - android推送通知不起作用appcelerator
- r - 如果扫描被转义,则使用默认值
- vba - VBA 使用 ListBox 将选择应用于模块
- c++ - 在现代 CMake 项目中归档静态依赖项
- c# - 没有 TelemetryClient.Flush() 是否存在内存影响或性能原因