有两种解决方案,给你转一下吧:
1.
#if %1=一 {%2=1}
#if %1=二 {%2=2}
.... ....
#if %1=十 {%2=10}
这部分是 alias change
#variable temporary1 {0} {0}
#variable temporary2 {0} {0}
#variable temporary3 {0} {0}
#variable temporary4 {0} {0}
#variable temporary5 {0} {0}
#if %pos(万,%1) {change %left(%1,%pos(万,%1)-1) temporary1}
#if %pos(千,%1) {change %rightback(%left(%1,%pos(千,%1)-1),2) temporary2}
#if %pos(百,%1) {change %rightback(%left(%1,%pos(百,%1)-1),2) temporary3}
#if %pos(十,%1) {change %rightback(%left(%1,%pos(十,%1)-1),2) temporary4}
#if %pos(十,%1) {change %rightback(%1,2) temporary5}
#if (@temporary5>9) {temporary5=0}
#if (%begins(%1,十)) {temporary4=1}
#math %2 (10000*@temporary1+1000*@temporary2+
100*@temporary3+10*@temporary4+@temporary5) (这行和上一行是同一行)
这部分是alias changeall
2.
new一个alias 名称为convert,value为 number=%1;
number=%replace( @number, 零, 0) ;number=%replace( @number, 一, 1); .......
number=%replace( @number, 八, 8);number=%replace( @number, 九, 9);
number=%replace( @number, 十, "*10+") ;number=%replace( @number, 百, "*100+");
number=%replace( @number, 千, "*1000+");number=%replace( @number, 万, "*10000+");
number=%replace( @number, " ", "")
#if (%ends( @number, +)) {number=%concat( @number, 0)}
#if (%begins( @number, *)) {number=%concat( 1, @number)}
number=%eval( @number)
#show @number
用法是convert后面加中文数字,结果输出阿拉伯数字
原理是把中文数字逐一转换为计算式子,通过%eval运算
但是范围是小于10w
有兴趣的人可以想想原因,以及如何计算超过10w的
希望对你们写机器有帮助
另注: 我用的是721, 如果你用的是555及以下版本,去掉语句中间的空格