![]() |
|
|
#1 |
|
初级会员
![]() ![]() ![]() ![]() ![]()
注册: 07年11月18日
帖子: 46
声望力: 0
声望:
23
![]() 积分:8
精华:1
现金:238两梁山币
资产:238两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
请教 如何转换中文数字为阿拉伯数字?
如题,在编写解迷机器时,最后涉及清理垃圾的问题,我用的是#trigger {$s%x~({*}~)} {drop %1}这个触发,但首先要将金子和银子以及钱物等存掉。否则会一起扔掉。开始我想到用#trigger {{金子|银子|钱}} {#gag}这个触发来避免丢钱的动作,但不管用。不知道谁有好的办法。另外也请教下将中文数字转换为阿拉伯数字的方法。多谢!!
|
|
|
|
|
|
#2 |
|
黄金会员
![]() ![]() ![]()
注册: 05年01月27日
来自: +1 GMT
帖子: 569
声望力: 27
声望:
72
![]() 积分: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及以下版本,去掉语句中间的空格 |
|
燕燕轻盈, 别后书辞, 莺莺娇软, 别时针线, 分明又向华胥见。 离魂暗逐郎行远 夜长争得薄情知, 淮南皓月冷千山, 春初早被相思染。 冥冥归去无人管。 |
|
|
|
|
|
|
#3 |
|
初级会员
![]() ![]() ![]() ![]() ![]()
注册: 07年11月18日
帖子: 46
声望力: 0
声望:
23
![]() 积分:8
精华:1
现金:238两梁山币
资产:238两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
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,不知道问题出在什么地方,望高手指教。这里我用具体数字替代了变量。另外赋值的变量省略了。 |
|
|
|
|
|
#4 | |
|
黄金会员
![]() ![]() ![]()
注册: 05年01月27日
来自: +1 GMT
帖子: 569
声望力: 27
声望:
72
![]() 积分:24
精华:5
现金:52两梁山币
资产:1002两梁山币
致谢数: 0
获感谢文章数:1
获会员感谢数:1 |
回复: 请教 如何转换中文数字为阿拉伯数字?
引用:
至于你说的%replace的问题,我想可能跟你replace的字符中都有“十”有关,可以这样解决: temp=二十 temp=%replace(@temp,二,2) temp=%replace(@temp,三,3) temp=%replace(@temp,十,*10) temp=%eval(@temp) #SA @temp 然后更改temp的汉字表述为二十或者三十,看看结果是否正确。 这个就是方法二的简单表述。 |
|
|
|
|
|
|
#5 |
|
初级会员
![]() ![]() ![]() ![]() ![]()
注册: 07年11月18日
帖子: 46
声望力: 0
声望:
23
![]() 积分:8
精华:1
现金:238两梁山币
资产:238两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
去试试看,谢了。。。。。。。。。。
|
|
|
|
|
|
#6 |
|
中级会员
![]() ![]()
注册: 09年04月25日
来自: 长安
帖子: 50
声望力: 17
声望:
18
![]() 现金:28两梁山币
资产:28两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
不知道怎么样,学习学习
|
|
|
|
|
|
#7 |
|
高级会员
![]() ![]() ![]() ![]()
注册: 06年06月29日
来自: 长安
帖子: 125
声望力: 21
声望:
17
![]() 现金:128两梁山币
资产:366两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
看的人一个头两个大了还没看来是怎么回事
|
|
|
|
|
#8 |
|
中级会员
![]() ![]() ![]()
注册: 09年05月15日
帖子: 62
声望力: 17
声望:
10
![]() 现金:72两梁山币
资产:72两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
很强大~~~很复杂
|
|
|
|
|
|
#9 |
|
中级会员
![]() ![]()
注册: 07年03月08日
帖子: 55
声望力: 20
声望:
31
![]() 积分:1
精华:1
现金:71两梁山币
资产:71两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
4.62可以用的: #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 |
|
|
|
|
|
#10 |
|
等待邮件验证会员
![]()
注册: 09年11月26日
帖子: 88
声望力: 17
声望:
19
![]() 现金:24两梁山币
资产:212两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
回复: 请教 如何转换中文数字为阿拉伯数字?
巨蟒怪一把抓住了你!
|
|
|
|
![]() |
| 添加到书签 |
| 主题工具 | |
| 显示模式 | 对此主题评分 |
|
|
相似的主题
|
||||
| 主题 | 主题作者 | 论坛 | 回复 | 最后发表 |
| 请教 | blessblan | 『 巫师天下 』 | 1 | 2005-06-03 02:55 |
| 新人。。。。请教! | jdhl | 『 梁山论剑 』 | 7 | 2004-11-21 09:44 |
| 请教feng_yue | asdwer | 『 梁山论剑 』 | 2 | 2003-09-23 18:23 |
| 请教 | lavafly | 『 梁山论剑 』 | 6 | 2003-07-02 12:15 |
| 请教 | 补锅佬 | 『 网站提问建议申请区 』 | 4 | 2002-06-05 08:58 |