回复 12# netbenton
制作了一段测试代码,使用了自己生成的测试数据集,经过比对,正确率非常高- @echo off&setlocal enabledelayedexpansion
- set capital=零壹贰叁肆伍陆柒捌玖
- set unit=仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分
-
- :测试
- for /f "tokens=1,2 delims=¥ " %%y in ('findstr "^¥" %~sf0') do (
- call :转换 %%y
- echo. 小写:%%y 大写:!返回! >> %0.log
- if not "人民币!返回!"=="%%z" (
- echo %%y 转换异常 返回:!返回! 参考:%%z
- echo %%y 转换异常 返回:!返回! 参考:%%z>> %0.log
- )
- )
- pause>nul
- goto :eof
-
- :转换
- setlocal enabledelayedexpansion
- set n=0&set en=
- set num=%1
- set int=%num:.=&set dec=%
- set dec=!dec!00
- set num=!int!!dec:~0,2!
- if not "%int:~16%$" == "$" echo 靠!你太高估我的能力啦!&pause>nul&goto :eof
- for /l %%i in (-1,-1,-18) do (
- for /f %%a in ("!num:~%%i,1!") do (
- set en=!capital:~%%a,1!!unit:~%%i,1!!en!
- )
- if "!num:~%%i!" equ "!num!" goto :ok
- )
- :ok
- set en=@!en:零角零分=整!
- for %%i in (拾,佰,仟,角,零,零) do set en=!en:零%%i=零!
- for %%i in (亿,万,元) do set en=!en:零%%i=%%i!
- set en=!en:零分=!&set en=!en:亿万=亿!&set en=!en:@元=@!&set en=!en:@零=@!
- endlocal & set 返回=%en:@=%
- goto :eof
-
- :: 人民币金额大小写转换测试集
- ¥0 人民币零元整
- ¥1 人民币壹元整
- ¥2 人民币贰元整
- ¥3 人民币叁元整
- ¥4 人民币肆元整
- ¥5 人民币伍元整
- ¥6 人民币陆元整
- ¥7 人民币柒元整
- ¥8 人民币捌元整
- ¥9 人民币玖元整
- ¥10 人民币壹拾元整
- ¥100 人民币壹佰元整
- ¥1000 人民币壹仟元整
- ¥10000 人民币壹万元整
- ¥100000 人民币壹拾万元整
- ¥1000000 人民币壹佰万元整
- ¥10000000 人民币壹仟万元整
- ¥100000000 人民币壹亿元整
- ¥1000000000 人民币壹拾亿元整
- ¥10000000000 人民币壹佰亿元整
- ¥100000000000 人民币壹仟亿元整
- ¥1000000000000 人民币壹万亿元整
- ¥11 人民币壹拾壹元整
- ¥101 人民币壹佰零壹元整
- ¥111 人民币壹佰壹拾壹元整
- ¥1001 人民币壹仟零壹元整
- ¥1010 人民币壹仟零壹拾元整
- ¥1011 人民币壹仟零壹拾壹元整
- ¥1100 人民币壹仟壹佰元整
- ¥1101 人民币壹仟壹佰零壹元整
- ¥1111 人民币壹仟壹佰壹拾壹元整
- ¥10001 人民币壹万零壹元整
- ¥10010 人民币壹万零壹拾元整
- ¥10100 人民币壹万零壹佰元整
- ¥11000 人民币壹万壹仟元整
- ¥11100 人民币壹万壹仟壹佰元整
- ¥11110 人民币壹万壹仟壹佰壹拾元整
- ¥11111 人民币壹万壹仟壹佰壹拾壹元整
- ¥100001 人民币壹拾万零壹元整
- ¥100010 人民币壹拾万零壹拾元整
- ¥100100 人民币壹拾万零壹佰元整
- ¥101000 人民币壹拾万零壹仟元整
- ¥110000 人民币壹拾壹万元整
- ¥110001 人民币壹拾壹万零壹元整
- ¥110010 人民币壹拾壹万零壹拾元整
- ¥110100 人民币壹拾壹万零壹佰元整
- ¥111000 人民币壹拾壹万壹仟元整
- ¥100000001 人民币壹亿零壹元整
- ¥1000000001 人民币壹拾亿零壹元整
- ¥1000000010 人民币壹拾亿零壹拾元整
- ¥1000001000 人民币壹拾亿零壹仟元整
- ¥1000010000 人民币壹拾亿零壹万元整
- ¥1000100000 人民币壹拾亿零壹拾万元整
- ¥1010000000 人民币壹拾亿零壹仟万元整
- ¥0.0 人民币零元整
- ¥0.1 人民币壹角
- ¥0.01 人民币壹分
- ¥0.10 人民币壹角
- ¥1.1 人民币壹元壹角
- ¥10.1 人民币壹拾元零壹角
- ¥11.1 人民币壹拾壹元壹角
- ¥10.01 人民币壹拾元零壹分
- ¥11.01 人民币壹拾壹元零壹分
- ¥100.1 人民币壹佰元零壹角
- ¥100.01 人民币壹佰元零壹分
- ¥1000.1 人民币壹仟元零壹角
- ¥1000.01 人民币壹仟元零壹分
- ¥10000.1 人民币壹万元零壹角
- ¥10000.01 人民币壹万元零壹分
- ¥100000.1 人民币壹拾万元零壹角
- ¥100000.01 人民币壹拾万元零壹分
- ¥.1 人民币壹角
- ¥.01 人民币壹分
复制代码
小写:0 大写:整
0 转换异常 返回:整 参考:人民币零元整
小写:1 大写:壹元整
小写:2 大写:贰元整
小写:3 大写:叁元整
小写:4 大写:肆元整
小写:5 大写:伍元整
小写:6 大写:陆元整
小写:7 大写:柒元整
小写:8 大写:捌元整
小写:9 大写:玖元整
小写:10 大写:壹拾元整
小写:100 大写:壹佰元整
小写:1000 大写:壹仟元整
小写:10000 大写:壹万元整
小写:100000 大写:壹拾万元整
小写:1000000 大写:壹佰万元整
小写:10000000 大写:壹仟万元整
小写:100000000 大写:壹亿元整
小写:1000000000 大写:壹拾亿元整
小写:10000000000 大写:壹佰亿元整
小写:100000000000 大写:壹仟亿元整
小写:1000000000000 大写:壹万亿元整
小写:11 大写:壹拾壹元整
小写:101 大写:壹佰零壹元整
小写:111 大写:壹佰壹拾壹元整
小写:1001 大写:壹仟零壹元整
小写:1010 大写:壹仟零壹拾元整
小写:1011 大写:壹仟零壹拾壹元整
小写:1100 大写:壹仟壹佰元整
小写:1101 大写:壹仟壹佰零壹元整
小写:1111 大写:壹仟壹佰壹拾壹元整
小写:10001 大写:壹万零壹元整
小写:10010 大写:壹万零壹拾元整
小写:10100 大写:壹万零壹佰元整
小写:11000 大写:壹万壹仟元整
小写:11100 大写:壹万壹仟壹佰元整
小写:11110 大写:壹万壹仟壹佰壹拾元整
小写:11111 大写:壹万壹仟壹佰壹拾壹元整
小写:100001 大写:壹拾万零壹元整
小写:100010 大写:壹拾万零壹拾元整
小写:100100 大写:壹拾万零壹佰元整
小写:101000 大写:壹拾万壹仟元整
101000 转换异常 返回:壹拾万壹仟元整 参考:人民币壹拾万零壹仟元整
小写:110000 大写:壹拾壹万元整
小写:110001 大写:壹拾壹万零壹元整
小写:110010 大写:壹拾壹万零壹拾元整
小写:110100 大写:壹拾壹万零壹佰元整
小写:111000 大写:壹拾壹万壹仟元整
小写:100000001 大写:壹亿零壹元整
小写:1000000001 大写:壹拾亿零壹元整
小写:1000000010 大写:壹拾亿零壹拾元整
小写:1000001000 大写:壹拾亿壹仟元整
1000001000 转换异常 返回:壹拾亿壹仟元整 参考:人民币壹拾亿零壹仟元整
小写:1000010000 大写:壹拾亿零壹万元整
小写:1000100000 大写:壹拾亿零壹拾万元整
小写:1010000000 大写:壹拾亿壹仟万元整
1010000000 转换异常 返回:壹拾亿壹仟万元整 参考:人民币壹拾亿零壹仟万元整
小写:0.0 大写:整
0.0 转换异常 返回:整 参考:人民币零元整
小写:0.1 大写:壹角
小写:0.01 大写:壹分
小写:0.10 大写:壹角
小写:1.1 大写:壹元壹角
小写:10.1 大写:壹拾元壹角
10.1 转换异常 返回:壹拾元壹角 参考:人民币壹拾元零壹角
小写:11.1 大写:壹拾壹元壹角
小写:10.01 大写:壹拾元零壹分
小写:11.01 大写:壹拾壹元零壹分
小写:100.1 大写:壹佰元壹角
100.1 转换异常 返回:壹佰元壹角 参考:人民币壹佰元零壹角
小写:100.01 大写:壹佰元零壹分
小写:1000.1 大写:壹仟元壹角
1000.1 转换异常 返回:壹仟元壹角 参考:人民币壹仟元零壹角
小写:1000.01 大写:壹仟元零壹分
小写:10000.1 大写:壹万元壹角
10000.1 转换异常 返回:壹万元壹角 参考:人民币壹万元零壹角
小写:10000.01 大写:壹万元零壹分
小写:100000.1 大写:壹拾万元壹角
100000.1 转换异常 返回:壹拾万元壹角 参考:人民币壹拾万元零壹角
小写:100000.01 大写:壹拾万元零壹分 |