求教数字转换

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

TtxcHello
Posts: 1
Joined: 16 Nov 2021, 09:13

求教数字转换

16 Nov 2021, 09:24

各位好,刚接触AHK,想在word中实现输入数字与中文的转换,求教各位如何实现。例如,1转为一,12转为十二,235转为二百三十五,1022转为一千零二十二。谢谢各位。
feiyue
Posts: 355
Joined: 08 Aug 2014, 04:08

Re: 求教数字转换

22 Nov 2021, 01:38

你可以参考这个。

Code: Select all


;数字转大写金额   by FeiYue
n2c(n){
    if !(n ~= "^[1-9][\d\.]*$")    ;当不是数字
        return
    r:=StrSplit(n,".")
    n:=StrSplit(r[1]), n2:=StrSplit(r[2])
    a:=StrSplit("零壹贰叁肆伍陆柒捌玖")
    b:=StrSplit("元拾佰仟万拾佰仟亿拾佰仟")
    b2:=StrSplit("角分")
    c:=d:="", k:=n.Length()
    Loop, % k
        c:=a[n[k+1-A_Index]+1] . b[A_Index] . c
    d:=SubStr(c,1,-2*b.Length())
    c:=SubStr(c,StrLen(d)+1)
    c:=RegExReplace(c,"零(拾|佰|仟)","零")
    c:=RegExReplace(c,"零{4}(万|亿)","零")
    c:=RegExReplace(c,"零+(万|亿)","$1零")
    c:=RegExReplace(c,"零+(?=零|元)")
    c:=(d ? d "兆" c : c), d:=""
    if (k:=n2.Length())
    {
        Loop, % k
            d.=a[n2[A_Index]+1] . b2[A_Index]
        d:=RegExReplace(d,"零(角|分)","零")
        d:=RegExReplace(d,"零+$")
    }
    c.=d ? d : "整"
    return c
}

loop {
    Inputbox, r, 测试, `n`n请输入要转成中文格式的数字:
    IfEqual, r,, Break
    msgbox, % n2c(r)
}


Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 15 guests