[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
测试好像不是俺想要的结果?
D:\bat_test>中文数字转阿拉伯数字.bat
输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一万九千七
n=9007

TOP

回复 3# qixiaobin0715


还是不行,测试如下:
输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一万九千七百
n=9701

请展示一下你的规范输入后的测试结果,谢谢

TOP

回复 5# qixiaobin0715


谢谢。从显示上看只有1个不正常。
不知为何,俺测试的好基本上都不正常。估计代码显示到网页后复制到本地时字符有出入。

TOP

回复 1# aloha20200628

5楼之前提出的问题还在
  1. 输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一亿零二十万零伍佰零一
  2. n=100200001
复制代码

TOP

回复 14# aloha20200628


    之前9楼的回复俺都已看到,但你认为的大写,其在现实应用中是存在的(是俺太不知足了,抱歉)。

TOP

回复 16# aloha20200628
把楼主的ChangeCnToAn9999子过程修改如下,经不完全测试,好像也能实现对大写的兼容:
  1. :: 最小段位转换函数》输出范围={ 0~9999 }
  2. :ChangeCnToAn9999 // %1=中文数字符串(实值) %2=返回值变量名
  3. if "%~1"=="零" set "%~2=0"&exit/b
  4. set "cn#=%~1" &set "cn#=!cn#:零=!"&set "uList=十,拾,百,佰,千,仟"
  5. set/a "n#=0,一=1,二=2,三=3,四=4,五=5,六=6,七=7,八=8,九=9,十=10,百=100,千=1000"
  6. set/a "n#=0,壹=1,贰=2,叁=3,肆=4,伍=5,陆=6,柒=7,捌=8,玖=9,拾=10,佰=100,仟=1000"
  7. for /L %%k in (0,2,6,8,10,12) do if "!cn#:~%%k,1!" neq "" (
  8.     set "n2c=!cn#:~%%k,2!" &set "nc1=!n2c:~0,1!" &set "nc2=!n2c:~1,1!"
  9.     if "!nc2!"=="" (set/a n#+=!nc1!) else for %%c in (!nc2!) do (
  10.         if "!uList:%%c=!" neq "!uList!" (set/a n#+=!nc1!*!nc2!) else (set/a n#+=!nc1!+!nc2!)
  11.     )
  12. )
  13. set "%~2=!n#!" &exit/b
复制代码

TOP

返回列表