直观的标题大小写

Intuitive Title Casing


我正在寻找一种方法,使脚本使用 Title Casing 更加直观。我正在寻找的是一个可以识别符号(/、-、\ 等)和典型首字母缩略词(FEMA、CDC、[City]PD 等)并适当应用标题大小写的脚本。我目前拥有的是:

SaveVar=%Clipboard%
Clipboard=
ClipWait, 0.5
Send ^c
ClipWait, 0.5
segment = %Clipboard%
; Replace text with text in title case
; Make words following "/" title case
StringUpper, segment, segment , T
; Process exceptions
segment := RegExReplace(segment, "\bA\b", "a")
segment := RegExReplace(segment, "\bAn\b", "an")
segment := RegExReplace(segment, "\bThe\b", "the")
segment := RegExReplace(segment, "\bTo\b", "to")
segment := RegExReplace(segment, "\bAt\b", "at")
segment := RegExReplace(segment, "\bIn\b", "in")
segment := RegExReplace(segment, "\bAs\b", "as")
segment := RegExReplace(segment, "\bAn\b", "an")
segment := RegExReplace(segment, "\bAnd\b", "and")
segment := RegExReplace(segment, "\bBut\b", "but")
segment := RegExReplace(segment, "\bOr\b", "or")
segment := RegExReplace(segment, "\bpdf\b", "PDF")
segment := RegExReplace(segment, "\bllc\b", "LLC")
segment := RegExReplace(segment, "\bdui\b", "DUI")
segment := RegExReplace(segment, "\bAmp\b", "amp")
segment := RegExReplace(segment, "\bPdf\b", "PDF")
segment := RegExReplace(segment, "\bBy\b", "by")
segment := RegExReplace(segment, "\bOf\b", "of")
segment := RegExReplace(segment, "\bFor\b", "for")
segment := RegExReplace(segment, "\b-up\b", "-Up")
; Make first letter uppercase
segment:=RegExReplace(segment, "(\w)(.+)","$U1")
; Replace segment text with modified contents of clipboard
Clipboard := segment
ClipWait, 0.5
Send ^v
Sleep 100
Clipboard=%SaveVar%
SaveVar=
return

这个问题是它将小写字母跟在符号后面,除了首字母缩写词的第一个字母。有没有办法让符号后面的字母例外,或者甚至在应用适当的大小写之前在符号周围应用间距?

下一行:

segment:=RegExReplace(segment, "(\w)(.+)","$U1")

添加行:

segment:=RegExReplace(segment, "(\W)([a-z])","$U2")

\W 是一个符号,如果后面跟着一个小写字母,即 [a-z] 那么 return 捕获的符号,以及捕获的大写字母。