|
在论坛里找了一些转换的方法,觉得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 编辑 ] |
|