北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 5818|回复: 2

中文数字抓取转换的方法

[复制链接]
发表于 2014-4-17 16:53:29 | 显示全部楼层 |阅读模式
本帖最后由 hhyzz 于 2014-4-17 04:56 PM 编辑

刚来北侠不久,新入武当,自然先看关于武当的WIKI。
mfan发了一个诵经robot的帖子,进去看了下。
我也发个关于抓取中文数字的方法,不同的地方在于使用了%pos函数。
这样就不用%begins函数反复匹配了。不对的地方,大家指正。

这里以每次完成任务后的描述   “     五百三十二点经验。” 为例。

#var num {一二三四五六七八九}   //先定义一下包含1-9 九个中文数字的变量,用来做对比。
#tr {%s(%x)百(%x)十点经验。}   //这个应该不用解释吧?
————————以下是触发的内容————————————————————
#var tmp_test 0;                            //定义一个临时变量,值为0
#var tmp_test %pos(%1,@num);  //这个是关键了,返回抓取的内容在变量num的第几个位置。
#add tmp_test 1;
#math tmp_test @tmp_test/2      
//每个中文字符,占两个字节,所以要把位置+1,再除以2,实际上到这里,中文数字就已经转换成功了。
                        
#math tmp_test @tmp_test*100;//抓取的是百位数,所以乘100
#var exp_tmp @tmp_test;           //把值赋给exp变量。
——————————下面的步骤同上,抓取十位数和个位数,就不注释了————————————
#var tmp_test %pos(%2,@num);
#add tmp_test 1;
#math tmp_test @tmp_test/2*10;
#math exp_tmp @exp_tmp+@tmp_test;
#var tmp_test %pos(%3,@num);
#add tmp_test 1;
#math tmp_test @tmp_test/2;
#math exp_tmp @exp_tmp+@tmp_test;
#math exp_get @exp_get+@exp_tmp;      //百位+十位 得到精确数字

最后变量 @exp_get 就能得到一个阿拉伯数字了。

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-4-17 16:58:58 | 显示全部楼层
嗯。、。。这是一篇好帖。。收藏 学习了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-4-18 16:25:04 | 显示全部楼层
逍遥行中的一个同样功能的函数:
#function {replace} {#var result %1;#replace result {%2} {%3}};
#function {ctd} {#math result {@replace{@replace{{0+@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{@replace{%1;{零};{*0+}};{十};{*10+}};{百};{*100+}};{千};{*1000+}};{万};{*10000+}};{六};{6}};{一};{1}};{二};{2}};{三};{3}};{四};{4}};{五};{5}};{七};{7}};{八};{8}};{九};{9}}+0};{++};{+}};{+*};{+}}}};
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 06:52 AM , Processed in 0.009129 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表