2016-03-04 6 views
0


Я ищу способ сделать скрипт более интуитивным с 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$2") 
; Replace segment text with modified contents of clipboard 
Clipboard := segment 
ClipWait, 0.5 
Send ^v 
Sleep 100 
Clipboard=%SaveVar% 
SaveVar= 
return 

Проблема с этим будет строчные буквы следующие символы, и все, кроме первой буквы аббревиатур. Есть ли способ сделать исключения для букв, следующих за символами, или даже применить интервал вокруг символа перед применением соответствующего случая?

ответ

0

Под строкой:

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

добавить строку:

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

\W является символом и если строчная буква следует за ним, т.е. [a-z] затем вернуть захваченное символ, вместе с захваченное письмо в верхнем регистре.

+0

Отлично, это помогает тонне! Благодарим за объяснение того, что делают части кода. Я все еще пытаюсь понять этот материал (очевидно). Еще раз спасибо! –