![]() |
请教 如何转换中文数字为阿拉伯数字?
如题,在编写解迷机器时,最后涉及清理垃圾的问题,我用的是#trigger {$s%x~({*}~)} {drop %1}这个触发,但首先要将金子和银子以及钱物等存掉。否则会一起扔掉。开始我想到用#trigger {{金子|银子|钱}} {#gag}这个触发来避免丢钱的动作,但不管用。不知道谁有好的办法。另外也请教下将中文数字转换为阿拉伯数字的方法。多谢!!
|
回复: 请教 如何转换中文数字为阿拉伯数字?
有两种解决方案,给你转一下吧:
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及以下版本,去掉语句中间的空格 |
回复: 请教 如何转换中文数字为阿拉伯数字?
1.
#if %1=一 {%2=1} 这个语句我开始也试过,不知道为啥,不起作用,不能正确赋值。注:我用的462编写的解迷机器。 2、这部分是 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 第二部分看不太懂,大侠能不能给个简短的说明,我也再研究下mud指令和函数。先谢了!! 3. 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 %replace的命令在462下面运用貌似有问题,我试过{%replace(二十,二十,20);%replace(三十,三十,30)}这个语句,每次不管触发数字是二十还是三十,结果返回值都是30,不知道问题出在什么地方,望高手指教。这里我用具体数字替代了变量。另外赋值的变量省略了。 |
回复: 请教 如何转换中文数字为阿拉伯数字?
引用:
至于你说的%replace的问题,我想可能跟你replace的字符中都有“十”有关,可以这样解决: temp=二十 temp=%replace(@temp,二,2) temp=%replace(@temp,三,3) temp=%replace(@temp,十,*10) temp=%eval(@temp) #SA @temp 然后更改temp的汉字表述为二十或者三十,看看结果是否正确。 这个就是方法二的简单表述。 |
回复: 请教 如何转换中文数字为阿拉伯数字?
去试试看,谢了。。。。。。。。。。
|
回复: 请教 如何转换中文数字为阿拉伯数字?
不知道怎么样,学习学习
|
回复: 请教 如何转换中文数字为阿拉伯数字?
看的人一个头两个大了还没看来是怎么回事
|
回复: 请教 如何转换中文数字为阿拉伯数字?
很强大~~~很复杂:em01:
|
回复: 请教 如何转换中文数字为阿拉伯数字?
引用:
#alias tran {#var %1 0;#var tr_num %2;tr_num=%remove("零",@tr_num);tr_num=%replace(@tr_num,"一","1");tr_num=%replace(@tr_num,"二","2");tr_num=%replace(@tr_num,"三","3");tr_num=%replace(@tr_num,"四","4");tr_num=%replace(@tr_num,"五","5");tr_num=%replace(@tr_num,"六","6");tr_num=%replace(@tr_num,"七","7");tr_num=%replace(@tr_num,"八","8");tr_num=%replace(@tr_num,"九","9");#if %pos("十",@tr_num)=1 {tr_num=%replace(@tr_num,"十","10|")} {tr_num=%replace(@tr_num,"十","0|")};tr_num=%replace(@tr_num,"百","00|");tr_num=%replace(@tr_num,"千","000|");tr_num=%replace(@tr_num,"万","0000|");#forall @tr_num {#add %1 %i}} 用法:tran result "八万八千八百八十八" 然后@result就会被赋值为88888 |
回复: 请教 如何转换中文数字为阿拉伯数字?
巨蟒怪一把抓住了你!
|
| 所有时间均为格林尼治时间 +9, 现在的时间是 04:43. |
Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号
站长 fengyue