ppeng 发表于 2009-6-4 05:16:34

我也请教一个函数

借用来的题目,其实是想请教一个模块。

谁手头有把中文数字转换成阿拉伯数字的zmud 模块? 想用来自动存钱。
谢谢

duno 发表于 2009-6-4 06:14:07

触发:

^(*)两白银~(Silver~)

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

先把中文串转为四则运算式,然后用 %eval 计算式子
Log:

你身上带著下列这些东西(负重 76%):
一千二百六十四两白银(Silver)
1*1000+2*100+6*10+4= 1264


[ 本帖最后由 duno 于 2009-6-4 06:20 AM 编辑 ]

duno 发表于 2009-6-4 06:16:34

上面的是思路,实际用的时候可以省略中间变量 @str 的声明,减少变量名占用
作用一样,只是压缩写成表达式形式,不占用全局变量

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

表达式方式就可以写在变量的值中,把变量作为自定义函数用了

[ 本帖最后由 duno 于 2009-6-4 02:53 PM 编辑 ]

lkyun 发表于 2009-6-4 08:49:47

想简单点直接cun all silver就是

ppeng 发表于 2009-6-5 04:57:40

谢谢,回头把模块输入。

ppeng 发表于 2009-6-5 04:57:59

原帖由 lkyun 于 2009-6-4 08:49 AM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
想简单点直接cun all silver就是

哈哈,还有这么一招的啊。

killunix 发表于 2009-10-28 11:05:31

如过只是“十九两”的话就不会计算,前面多了个*

blueready 发表于 2009-10-28 12:44:22

直接alias cunallcun all silver;cun all gold;cun all coin;cun all cashhz5

killunix 发表于 2009-10-28 23:50:59

不仅仅是为了存钱啊,还有别的用处

duno 发表于 2010-1-4 07:47:01

原帖由 killunix 于 2009-10-28 11:05 AM 发表 http://pkuxkx.net/forum/images/common/back.gif
如过只是“十九两”的话就不会计算,前面多了个*
str=" "%1" "
str=%replace(@str,"万","*10000+")
...
str=%replace(@str,"+ ","")
str=%replace(@str," *","")
#show 囧 = %eval(@str)
页: [1] 2
查看完整版本: 我也请教一个函数