求教数字转换
Moderators: tmplinshi, arcticir
求教数字转换
各位好,刚接触AHK,想在word中实现输入数字与中文的转换,求教各位如何实现。例如,1转为一,12转为十二,235转为二百三十五,1022转为一千零二十二。谢谢各位。
Re: 求教数字转换
你可以参考这个。
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)
}
Who is online
Users browsing this forum: No registered users and 16 guests