使用AHK及正则实现大小写互转,下划线转驼峰
v1版本代码
;当此脚本已经运行时自动替换旧实例再次运行。
#SingleInstance, Force
SendMode Input
SetWorkingDir, %A_ScriptDir%
;sql相关
::sel::select from
::cnt::count()
::wh1::where 1 = 1
::where1::where 1 = 1
::gb::group by
::od::order by
; 定义一个函数来获取所选文本
GetSelectedText()
{
; 定义变量来保存返回的文本
Static SelectedText := ""
; 复制选中的文本到剪贴板
Send, ^c
Sleep, 100
; 读取剪贴板的内容
SelectedText = %Clipboard%
return SelectedText
}
; 大小写转换
ChangeSelectTextUL()
{
; 获取选中的内容
SelectedText := GetSelectedText()
if(RegExMatch(SelectedText, "([A-Z])")){
; MsgBox, 64, 提示, 大写,转为小写!
SelectedText := RegExReplace(SelectedText,"([A-Z]*)","$L1")
}else if(RegExMatch(SelectedText, "([a-z])")){
; MsgBox, 64, 提示, 大写,转为小写!
SelectedText := RegExReplace(SelectedText,"([a-z]*)","$U1")
}else{
; MsgBox, 64, 提示, 暂未匹配!
}
return SelectedText
}
; 下划线驼峰转换
ChangeSelectTextHump()
{
; 获取选中的内容
SelectedText := GetSelectedText()
if(RegExMatch(SelectedText, "([a-z])_([a-z])")){
; MsgBox, 64, 提示, 下划线转驼峰!
SelectedText := RegExReplace(SelectedText,"([a-z])_([a-z])","$1$U2")
}else if(RegExMatch(SelectedText, "([a-z])([A-Z])")){
; MsgBox, 64, 提示, 驼峰,转为下划线!
SelectedText := RegExReplace(SelectedText,"([a-z])([A-Z])","$1_$L2")
}else{
; MsgBox, 64, 提示, 暂未匹配!
}
return SelectedText
}
; 建内容放入剪贴板,并粘贴
CopyText(copyText)
{
; 将新内容放入剪贴板
Clipboard := copyText
; 发送Ctrl+V粘贴剪贴板内容
Send, ^v
}
; 使用示例,将下划线、驼峰互转
F4::
SelectedText := ChangeSelectTextHump()
CopyText(SelectedText)
; MsgBox, 64, 提示, 所选文本是:`n%SelectedText%
Return
; Ctrl+Shift+x,将大小写互转
^+x::
SelectedText := ChangeSelectTextUL()
CopyText(SelectedText)
; MsgBox, 64, 提示, 所选文本是:`n%SelectedText%
Return
符号解释
^ 符号代表Ctrl键。
! 符号代表Alt键。
# 代表键盘上的Windows键。
+ 符号代表Shift
; 符号代表注释。示例:
^+x = Ctrl+Shift+x