我知道了 不整了,算0的话没法算了,中间的4的整数个数0不算的话,可以有6个0
10000001 不整了,算0的话没法算了,中间的4的整数个数0不算的话,可以有6个0
10000001
netegg 发表于 2013-3-3 16:41 http://www.autoitx.com/images/common/back.gif
这不就是“一千万零一” 回复 18# afan
是啊,但是情况貌似多了点 研究研究。。。。 本帖最后由 netegg 于 2013-3-4 04:48 编辑
#include <WinAPIEx.au3>
#include <array.au3>
$tFormat = _WinAPI_CreateNumberFormatInfo(0, 0, 4, '', ' ', 0)
$num = _WinAPI_GetNumberFormat(0, '15700970090560901', $tFormat)
$aNum = StringSplit($num, ' ', 2)
Local $aDigit = ['', '万', '亿', '兆', '京']
Local $aDec = ['0', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
$ret = ''
For $i = 0 To UBound($aNum) - 1
Switch StringLen($aNum[$i])
Case 4
$ret &= StringFormat('%s仟%s佰%s拾%s', $aDec, 1))], $aDec, 2, 1))], $aDec, 3, 1))], $aDec, 1))]) & $aDigit
Case 3
$ret &= StringFormat('%s佰%s拾%s', $aDec, 1))], $aDec, 2, 1))], $aDec, 1))]) & $aDigit
Case 2
$ret &= StringFormat('%s拾%s', $aDec, 1))], $aDec, 1))]) & $aDigit
Case 1
$ret &= StringFormat('%s', $aNum[$i]) & $aDigit
EndSwitch
Next
$ret = StringRegExpReplace($ret, '0[仟|佰|拾]', '0')
$ret = StringRegExpReplace($ret, '0{1,}', '零')
$ret = StringReplace($ret, '零兆', '兆')
$ret = StringReplace($ret, '零亿', '亿')
$ret = StringReplace($ret, '零万', '万')
$ret = StringReplace($ret, '零京', '京')
MsgBox(0, 0, $ret)还有点问题 本帖最后由 netegg 于 2013-3-4 11:53 编辑
再简单些吧!!
$num = '15700970090560901'
$aNum = StringRegExp(StringFormat('%0' & Ceiling(StringLen($num) / 4) * 4 & 's', $num), '\d{4}', 3)
Local $aDigit = ['', '万', '亿', '兆', '京']
Local $aDec = ['0', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
$ret = ''
For $i = 0 To UBound($aNum) - 1
$ret &= StringFormat('%s仟%s佰%s拾%s', $aDec, 1))], $aDec, 2, 1))], $aDec, 3, 1))], $aDec, 1))]) & $aDigit
Next
$ret = StringReplace(StringReplace(StringReplace(StringReplace(StringRegExpReplace(StringRegExpReplace($ret, '0[仟|佰|拾]', '0'), '0{1,}', '零'), '零兆', '兆'), '零亿', '亿'), '零万', '万'), '零京', '京')
MsgBox(0, 0, stringtrimright(stringtrimleft($ret,BitAND(StringInStr(StringLeft($ret, 1), '零'),1)), BitAND(StringInStr(Stringright($ret, 1), '零'),1)))
开头结尾两个零不知道怎么搞了,只好凑了一下,先放着了
afan那个数如下,用上面的代码做的,楼主的那几个数如图1
基本无位数限制,只要有对应单位名称就行 可以搞到77位数
把Local $aDigit = 这行改成
Local $aDigit = ['', '万', '亿', '兆', '京', '垓', '杼','穰','沟','涧','正','载','极','恒河沙', '阿僧只','那由他','不可思议','无量','大数']懒得继续往下添了,估计这么大的数够用了
计数单位见http://wenwen.soso.com/z/q165938584.htm 本帖最后由 netegg 于 2013-3-5 19:54 编辑
第九行改成
$ret = StringRegExpReplace(StringRegExpReplace($ret, '零[仟|佰|拾]', '零'), '零(?=[京|兆|亿|万])|^零|零$|零{2,}', '')
msgbox(0,0,$ret) 学习下!!!!!!!!!!!!!! 留個腳印 macgyver不錯的資料
页:
1
[2]