北大侠客行MUD论坛

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

[已解约] 转换数字的问题 (zmud 7.21)

[复制链接]
发表于 2011-8-14 19:09:25 | 显示全部楼层 |阅读模式
在论坛里找了一些转换的方法,觉得oolong的算式蛮简单的。
http://www.pkuxkx.net/forum/viewthread.php?tid=11586&page=1#pid171662

不过在实际运用上出了一个问题,就是这个方法老是不能读取第一个函数以后数据。举个例子:

#TR {你曾经结束过(%x)个生命,其中有(%x)个是其他玩家,(%x)个是宠物。} {
        
#SH %eval( %replace( %replace( 0+(%replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %1, 零, "0+"), 十, "*10+"), 百, "*100+"), 千, "*1000+"), 万, "*10000+"), 一, "1"), 二, "2"), 三, "3"), 四, "4"), 五, "5"), 六, "6"), 七, "7"), 八, "8"), 九, "9"))+0), "++", "+"), "+*", "+")

#SH %1
}


%1,被结束生命的数字,中文还是阿拉伯,输出都没有问题,但是如果我要输出被杀玩家或者宠物的数字,这个方法就出岔了。虽然#SH %2 可以准确的输出被提取的中文数字,不过oolong的方程式却输出失败。大家可以试试,研究一下究竟哪里出错了。我怕是我的软件有问题了。


更新:哈哈,终于发现了问题所在。忘了给中文字体括上括号。看来zmud对中文处理的问题还是很敏感。

另外,我想说的是,刚发现了oolong给的程式里的缺点。它不能处理11~19的中文数字如“十六”。所以我多加了一个%replace来解决这个问题。

%eval( %replace( %replace( %replace( 0+(%replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %1, "零", "0+"), "十", "*10+"), "百", "*100+"), "千", "*1000+"), "万", "*10000+"), "一", "1"), "二", "2"), "三", "3"), "四", "4"), "五", "5"), "六", "6"), "七", "7"), "八", "8"), "九", "9"))+0), "++", "+"), "+*", "+"), "~(*10+", "~(10+"))


这样就比较完美了。不过我还会再做一些测试。

更新2:再仔细对照,发现看来不是oolong的程式有问题,不过是我在原程式里的"0+"后和“+0前”多加括号造成的。抱歉。
下面的程式应该没有问题滴。

%eval( %replace( %replace( 0+%replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %2, "零", "0+"), "十", "*10+"), "百", "*100+"), "千", "*1000+"), "万", "*10000+"), "一", "1"), "二", "2"), "三", "3"), "四", "4"), "五", "5"), "六", "6"), "七", "7"), "八", "8"), "九", "9")+0), "++", "+"), "+*", "+"))



北大侠客行MUD,中国最好的MUD

[ 本帖最后由 buffet 于 2011-8-14 11:49 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-8-14 23:24:34 | 显示全部楼层
好东西,收藏了,等更新
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-8-15 00:07:21 | 显示全部楼层
完全看不懂,ctrl+del
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-10-15 11:46:50 | 显示全部楼层
测试了一下不成功,why?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-10-15 12:57:31 | 显示全部楼层
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-9-20 06:58:49 | 显示全部楼层
回复 1# buffet

豁然间发现万已经不够用了。。。
主要改动:
1,"万"原来替换为"*10000+", 更新为"+0)*10000+(0+",确保几十万也能算了。
2,根据pkuxkx特点增加亿,但用不着兆啊
3,未严格测试,期待自助餐同学回归

【alias trans】返回变量 @trans值
#var trans %eval( %replace( %replace( (0+%replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %replace( %1, "零", "*0+"), "十", "*10+"), "百", "*100+"), "千", "*1000+"), "万", "+0)*10000+(0+"), "亿", "+0)*100000000+(0+"), "六", "6"), "一", "1"), "二", "2"), "三", "3"), "四", "4"), "五", "5"), "七", "7"), "八", "8"), "九", "9")+0), "++", "+"), "+*", "+"))
#say From %1 to @trans %format( "&10.0n", @trans)

自己随便测试一个
trans 二十亿一千零三十五万七千零二十一
结果
From 二十亿一千零三十五万七千零二十一 to 2010357021 2,010,356,992
欢迎baffet同学回归测试哦

PS %format 竟然亿以上数值不对。。。算帮zmud 721发现一个bug了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-11-3 09:51:43 | 显示全部楼层
膜拜+感谢+copy
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-29 12:19 PM , Processed in 0.010232 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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