查看单个帖子
旧 2009-05-16   #2
liccry
黄金会员
黄金会员五级会员
级别:10 | 在线时长:287小时 | 升级还需:43小时级别:10 | 在线时长:287小时 | 升级还需:43小时级别:10 | 在线时长:287小时 | 升级还需:43小时级别:10 | 在线时长:287小时 | 升级还需:43小时
 
liccry 的头像
 
注册: 05年01月27日
来自: +1 GMT
帖子: 569
声望力: 27
声望: 72 liccry 略通道行
积分:24
精华:5
现金:52两梁山币
资产:1002两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1
回复: 请教 如何转换中文数字为阿拉伯数字?

有两种解决方案,给你转一下吧:

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及以下版本,去掉语句中间的空格

燕燕轻盈,                 别后书辞,
莺莺娇软,                 别时针线,
分明又向华胥见。              离魂暗逐郎行远
夜长争得薄情知,              淮南皓月冷千山,
春初早被相思染。              冥冥归去无人管。
liccry 当前离线  
回复时引用此帖