:: 人民币金额小写转大写
::dos联盟里早以有经典代码了。
::实在想不出比他更精简的代码,本想精简一下他的代码,结果发现越减越多。
::也发出来吧,算是给论坛添一块砖。
::以下代码前半部分出自dos联盟的 qzwqzw
::http://www.cn-dos.net/forum/view ... =%E5%A4%A7%E5%86%99
:- @echo off
- set tbl1=零壹贰叁肆伍陆柒捌玖
- set tbl2=分角元拾佰仟万拾佰仟亿拾佰仟
- :test
- setlocal EnableDelayedExpansion&cls
- set /p num=请输入金额(小于一万亿元)
- echo\&echo 小写 %num%&echo\
- for /f "tokens=1,2 delims=." %%f in ("%num%") do (
- set num2=%%g00
- set num=%%f!num2:~0,2!
- )
- :loop
- call set rmb=%%tbl1:~%num:~-1,1%,1%%%%tbl2:~%bit%,1%% %rmb%
- set /a bit+=1
- set num=%num:~0,-1%
- if not "%num%"=="" goto loop
- rem 以上代码原创作者 qzwqzw 出自 cn-dos 联盟
- rem 地址:http://www.cn-dos.net/forum/viewthread.php?tid=26230&fpage=1&highlight=%E5%A4%A7%E5%86%99
- for /f "tokens=1-3 delims=亿万" %%a in ("%rmb%") do (
- if not "%%c"=="" (
- call :lis "%%a" 亿
- call :lis "%%b" 万
- call :lis "%%c"
- ) else (
- if not "%%b"=="" (
- call :lis "%%a" 万
- call :lis "%%b"
- ) else call :lis "%%a"
- ))
- if "!rm:~-1!"=="元" (set rm=!rm!整) else set rm=!rm:元=元零!
- set rm=!rm:零零=零!
- echo 大写 !rm!
- echo\&pause
- endlocal
- goto :test
- :lis
- set str=
- for %%i in (%~1) do (
- set var=%%i
- set var=!var:零元=元!
- if "!var:~0,1!"=="零" (set str=!str!零) else set str=!str!%%i
- set str=!str:零零=零!&set str=!str:零元=元!
- )
- if "!str:~-1!"=="零" set str=!str:~0,-1!
- if not "!str!"=="" set rm=!rm!!str!%~2
- goto :eof
复制代码
[ 本帖最后由 随风 于 2008-3-11 15:07 编辑 ] |