Greetings!
A function for hotkeys is required - converting numbers to text.
Those. Often you have to write, for example, “1,000,000 (One million) rubles 00 kopecks.”
So, the ability to automate such text after writing the numbers is required.
I write - 1,000,000, press the hot key and next to the written numbers the number is automatically written in the text - '(One million)'.
Is it possible to implement such a function? How to do it?
I would be very grateful for your help.
Convert numbers to text
Try this as a shortcut (Type: Command). Script will read the number left from the caret and add spelled text
Based on the function found here:
https://www.autohotkey.com/boards/viewt ... p?t=104617
Code: Select all
send, ^+{Left}
send ^c
send {right}
sleep 100
n1 := strsplit(clipboard,".").1
n2 := strsplit(clipboard,".").2
stringreplace, n1, n1, `,,, all
send, % " - (" Spell(n1) " dollars and " Spell(n2) " cents)"
return
Spell(n) {
Static p1=" thousand",p2=" million",p3=" billion",p4=" trillion",p5=" quadrillion",p6=" quintillion"
, p7=" sextillion",p8=" septillion",p9=" octillion",p10=" nonillion",p11=" decillion"
, t2="twenty",t3="thirty",t4="forty",t5="fifty",t6="sixty",t7="seventy",t8="eighty",t9="ninety"
, o0="zero",o1="one",o2="two",o3="three",o4="four",o5="five",o6="six",o7="seven",o8="eight"
, o9="nine",o10="ten",o11="eleven",o12="twelve",o13="thirteen",o14="fourteen",o15="fifteen"
, o16="sixteen",o17="seventeen",o18="eighteen",o19="nineteen"
n :=RegExReplace(n,"^0+(\d)","$1") ; remove leading 0s from n
If (11 < d := (StrLen(n)-1)//3) ; #of digit groups of 3
Return "Number too big"
If (d) ; more than 3 digits
Return Spell(SubStr(n,1,-3*d)) p%d% ((s:=SubStr(n,1-3*d)) ? " " Spell(s) : "")
i := SubStr(n,1,1)
If (n > 99) ; 3 digits
Return o%i% " hundred" ((s:=SubStr(n,2)) ? " " Spell(s) : "")
If (n > 19) ; n = 20..99
Return t%i% ((o:=SubStr(n,2)) ? "-" o%o% : "")
Return o%n% ; n = 0..19
}
return
Based on the function found here:
https://www.autohotkey.com/boards/viewt ... p?t=104617