如何用AutoHotkey为选中的多个文本批量添加引号?
批量为选中的多个字符串添加引号的AutoHotkey实现
核心逻辑
通过快捷键触发脚本,完成以下操作:
- 复制选中的文本到剪贴板
- 将文本按行分割(默认每个目标字符串单独一行)
- 为每一行非空文本前后添加双引号
- 合并处理后的内容并粘贴回原位置
完整脚本
^+q:: ; 复制选中内容到剪贴板 Clipboard := "" SendInput, ^c ClipWait, 1 ; 等待剪贴板内容就绪 if ErrorLevel ; 复制失败则直接退出 return ; 按行分割文本,自动去除多余回车符 lines := StrSplit(Clipboard, "`n", "`r") processedLines := [] ; 遍历每行,添加引号并跳过空行 for _, line in lines { trimmedLine := Trim(line) if trimmedLine = "" continue processedLines.Push("""" . trimmedLine . """") } ; 合并处理后的行,保留原换行格式 newText := StrJoin(processedLines, "`n") ; 将结果粘贴回原位置 Clipboard := newText SendInput, ^v return ; 辅助函数:将数组元素用指定分隔符拼接成字符串 StrJoin(arr, sep="") { output := "" for idx, item in arr { if idx > 1 output .= sep output .= item } return output }
使用步骤
- 选中目标文本:确保每个需要添加引号的字符串单独占一行(空行会被自动忽略)
- 触发快捷键:按下
Ctrl+Shift+Q,所有非空字符串会自动被添加前后双引号
自定义调整
如果你的字符串用其他分隔符(比如逗号、空格),只需修改分割逻辑:
- 例:若字符串以逗号分隔,将
lines := StrSplit(Clipboard, "n", "r")改为lines := StrSplit(Clipboard, ", ") - 例:需要添加单引号,把
""" . trimmedLine . """替换为"' . trimmedLine . '"
内容的提问来源于stack exchange,提问作者Henrik
相关产品推荐
相关产品推荐

