作者hmml (hmml)
看板mud_sanc
标题[心得] Zmud函数的解说。(慢慢增加)
时间Fri Oct 31 00:59:47 2008
慢慢补....说明是套用别人的:
<<
http://www.tymud.com/www/20/2007-04/99.html>>
如果有错误,请多多指教,但对超可爱龙娃娃或DRAGONDOLL有异议则无视.....XD
=======================================
%abs(i):返回i的绝对值
EX:
#say %abs(-1) 会在画面显示
1
---------------------------------------
%concat(s1,s2,s3..):组合字串s1,s2,s3,最多不超过9个
EX:
#say %concat(超,可,爱,龙娃,娃),会显示
超可爱龙娃娃
---------------------------------------
%copy(s,i,n):返回字符串s的一部分,从第i个字符开始,共n个字符
EX:
#say %copy(hello,2,1) 会显示
e
#say %copy(超可爱龙娃娃,3,2) 会显示
可
注:中文字是双字元组成,所以i只能是奇数,n只能是偶数,否则会乱码
---------------------------------------
%delete(s,i,n):删除字符串s中从第i字符开始的n个字符
EX:
#say %delete(party,5,1) 会显示
part
#say %delete(超可爱龙娃娃,3,2)会显示
超爱龙娃娃.....XD
注:中文字是双字元组成,所以i只能是奇数,n只能是偶数,否则会乱码
---------------------------------------
%insert(p,s,i):在字串s的第i个字符处插入字串p
EX:
#say %insert(龙,超可爱娃娃,7) 会显示
超可爱龙娃娃
#say %insert("cute ",dragondoll,1) 会显示
cute dragondoll
#say %insert(cute,dragondoll,1) 和
#say %insert(cute ,dragondoll,1)
都会显示
cutedragondoll,空格必需加""才有效!
---------------------------------------
%isnumber(s):如果字串s是数字,返回true
EX:
#if(%isnumber(%1)) {#say 超可爱龙娃娃} {#say dragondoll}
如果%1=8088 就会执行
#say 超可爱龙娃娃,如果是cute,则执行
#say dragondoll
---------------------------------------
%left(s,n):从字串s中截取最左边的n个字符
EX:
#say %left(超可爱龙娃娃,6) 会显示
超可爱
#say %left(dragondoll,6)会显示
dragon
---------------------------------------
%begins(s1,s2):如果字串s1的开头是s2,其值为true
EX:
(%begins(%1,超)) {#say 超可爱龙娃娃装新手} {#say 超龙娃娃按日子换名字}
假设%1是超可爱龙娃娃,则字首就会相符,所以执行
#say 超可爱龙娃娃装新手
(糟了,无限回圈!)
但%1收到星辰时,则字首就不会相符,所以执行
#say 超龙娃娃按日子换名字
(又无限回圈了!)
注:以上范例可以弄当zmud!
---------------------------------------
%ends(s1,s2):如果s1在s2的尾部,返回true
EX:
#if (%ends(%1,宝)) {#say 超可爱龙娃娃爱装新手} {#say 超可爱龙娃娃一年换365
个名字}
假设%1是超可爱龙娃娃,则字尾就会相符,所以执行
#say 超可爱龙娃娃爱装新手
但%1收到星辰时,则字尾就不会相符,所以执行
#say 超可爱龙娃娃一年换365个名字
---------------------------------------
%len(s):返回字串s的长度
EX:
#say %len(超可爱龙娃娃)>>
12
#say %len(dragondoll)>>
10
---------------------------------------
%lower(s):将字串s转成小写
EX:
#say %upper(DRAGONDOLL)>>
dragondoll
---------------------------------------
%upper(s):转换成大写
EX:
#say %upper(dragondoll)>>
DRAGONDOLL
注:英文字母专用,不接受中文字或全形字
---------------------------------------
%proper(s):将英文单字中第一个字母外的其他字母转成小写
EX:
#say %proper(dragondoll)>>
Dragondoll
#say %proper(DRAGONDOLL)>>
Dragondoll
#say %proper(dRAGONDOLL)>>
Dragondoll
#say %proper(龙娃娃)>>
娃娃,由於龙的前半个字元被换掉,所以会变掉,这里
是变成空格!
注:所以也是英文字母专用
---------------------------------------
%max(a,b,c,d...):取最大值
EX:
#say %max(1,3,56,1,3333) 显示
3333
---------------------------------------
%min(a,b,c,d...):取最小值
EX:
#say %min(1,3,56,1,3333) 显示
1
---------------------------------------
%null(s):如果字串s为空,返回true
EX:
#if(%null(@cute)) {#say 超可爱龙娃娃} {#say dragondoll}
当变数@cute出现字样,如cute char则执行
#say dragondoll
若变数@cute是空白的,则执行
#say 超可爱龙娃娃
---------------------------------------
%pos(p,s):返回字串p在字串s中的位置,如果p不在s中,返回0/false
EX:
#say %pos(on,dragondoll)>>
5
#say %pos(可爱,超可爱龙娃娃)>>
3
#say %pos("不可爱",超可爱龙娃娃)>>
0
#if (%pos("【",%1)) {#cap chat} {#noop}
当%1中有【时,则
#cap chat,否则
#noop
---------------------------------------
%ismember(s,list):如果字串s在字串列表list中,返回true
EX:
#say %ismember(%1,超|可|爱|龙|娃|娃)
当%1为"超",会显示
1,若为"可",则显示
2,依此类推,不管值如何,都是(true)
当%1为列表以外的字,如"dragondoll",则显示
0,判断为不成立(false)
现在设定一个变数如右:
#var dragondoll (超|可|爱|龙|娃|娃)
将上例改成:
#say %ismember(%1,@dragondoll)
当%1为"超",显示
1,若为"可",显示
1,值都为真(true)
当%1为@dragondoll没有的字,如"雷",则显示
0,判断为不成立(false)
注:例二的值只有0和1,不会出现别的
---------------------------------------
%additem(s,list):增加字符串s到字符串列表list中
EX:先设定一个字串:
#var dragondollkiller (女王陛下|巴哈姆特|豆腐|屎蛋|阿尼)
针对这段讯息:
是谁杀了龙娃娃!目前检查总长小宝和机器战警将无尾熊列为嫌犯之一!
设定触发:
Pattern:是谁杀了龙娃娃!目前检查总长小宝和机器战警将(%1)列为嫌犯之一!
Commands:#var %additem(%1,@dragondollkiller)
如此一来,无尾熊就会被加入@dragondollkiller之中!
使用
#say @dragondollkiller看结果:
女王陛下|巴哈姆特|豆腐|屎蛋|阿尼|无尾熊
---------------------------------------
%delitem(s,list):从字符串列表list中删除字符串s
EX:续用上例!针对这段讯息:
经过多日查证!屎蛋已经被排除在命案嫌犯名单之外!
屎蛋走出局外,声称机器战警对他……..(不重要!)
设定触发:
Pattern:经过多日查证!(%1)已经被排除在命案嫌犯名单之外!
Commands:#var %deltiem(%1,@dragondollkiller)
触发後,@dragondollkiller中的"屎蛋"会剔除掉!
使用
#say @dragondollkiller看结果:
女王陛下|巴哈姆特|豆腐|阿尼|无尾熊
注:阿尼则被挂掉了!
---------------------------------------
%leftback(s,n):从倒数第n个字符开始,截取字串s最左边的部分
EX:
#say %leftback(超可爱龙娃娃,2)>>
超可爱龙娃
#say %leftback(超可爱龙娃娃,4)>>
超可爱龙
#say %leftback(超可爱龙娃娃,6)>>
超可爱
注:中文字串时,n请使用偶数!
---------------------------------------
%rightback(s,n):从倒数第n个字符开始,截取字串s最右边的部分
EX:
#say %rightback(超可爱龙娃娃,2)>>
娃
#say %rightback(超可爱龙娃娃,4)>>>
娃娃
#say %rightback(超可爱龙娃娃,6)>>>
龙娃娃
注:中文字串时,n请使用偶数!
---------------------------------------
%remove(p,s):在字串s中删除子串p
EX:
#say %replace(超可爱龙娃娃,娃娃)>>
超可爱龙
%repeat(s,n):重复返回字串s共n次
EX:
#say %repeat(超可爱龙娃娃,2)>>
超可爱龙娃娃超可爱龙娃娃(执行两次)
#say %repeat(超可爱龙娃娃,1)>>
超可爱龙娃娃(执行一次)
#say %repeat(超可爱龙娃娃,0)>>(不执行)
---------------------------------------
%replace(s,p,r):在字串s中搜索字串p并替换成字串r
EX:
#say %replace(超可爱龙娃娃,娃娃,宝宝)>>
超可爱龙宝宝
---------------------------------------
%right(s,n):从字串s中截取最右边的n个字符
EX:
#say %right(超可爱龙娃娃,4)>>
爱龙娃娃
---------------------------------------
%time(format):返回当前的日期时间,如果format省略,将返回详细的日期时间信息,
EX:
#say %time(yy/mm/dd hh:mm:ss)>>
08/10/31 02:43:04
#say %time>>
星期五 十月 31, 2008 2:47:36 am(完整讯息,不过会占空间)
注:yy:西元年後两位
yy、yyy:西元年四位
mm:月份
mmm:中文月份
hh、h:时
mm、m:分
ss、s:秒
不能使用全形字元隔开各数!加""也不行!
---------------------------------------
%numwords(s,d):返回字串s中的单词数,d为单词分隔符,默认值是空格
EX:
#say %numwords("超可爱龙娃娃老爱装新手!")>>
1
#say %numwords("超可 爱龙娃 娃老爱装新手!")>>
3
#say %numwords("超可 爱龙娃 娃老爱装新手!")>>
1,预设为半形空格,所以
仍判定为
1
#say %numwords("超可 爱龙娃 娃老爱装新手!", )>>
3,在後方接上自己的
设定
(全形空格),判断就会符合需求!
#say %numwords("超可 爱龙娃 娃老爱装新手!",)>>
3
#say %numwords("超可,爱,龙娃娃老爱装新手!",,)>>
1,如果使用到可能是语法会
用到的字元,将判断错误!
#say %numwords("超可,爱,龙娃娃老爱装新手!",",")>>
3,将分隔字元用""框起来
,就能正常使用!
---------------------------------------
%word(s,i,d):返回字串s中的第i个单词,d指出字串的分隔符,如果省略,默认是空格
EX:
#say %word(dragondoll is very cute.,3)>>
very
#say %word(dragondoll is very cute.,1)>>
dragondoll
#say %word(dragondoll,is,very,cute.,3,,)>>
dragondoll,以zmud可能会用到的字
元做分隔记号时,会发生错误!
#say %word("dragondoll,is,very,cute.",3,",")>>
very,如本例,字串和分隔记号
均加上"",就能正常使用!
注:格式完整的写法可以减少执行错误发生!
---------------------------------------
%mod(a,b):求出a/b的余数
EX:
#say %mod(1,6)>>
0,只要a值在0~b-1之间,值都是0
#say %mod(6,6)>>
0
#say %mod(12,6)>>
0,如果被整除,结果都是0
#say %mod(7,6)>>
1
#say %mod(8,6)>>
2,都得到余数
注:a与b都可以放式子进去,也可以用变数。
---------------------------------------
%expand(s[,level]):扩展字符串s中的变量和函数
EX:
#VAR dragondoll "龙娃娃"
#VAR cute "超可爱@dragondoll"
#say @cute >>结果出现
超可爱龙娃娃,但改成
#say %expand(@cute,1)>>出现
超可爱@dragondoll
注:别问我後面那个1是啥??我也不清楚........sob
---------------------------------------
%eval(p):返回表达式p的结果
EX:
#say %eval(1+30)>>
31
#say %eval(1*30)>>
30
#say %eval(1-30)>>
-29,负数也没问题。
#say %eval(1/39)>>
0,小数的部份为无条件舍去。
#say %eval(2999-3000+5*3)>>
14,四则运算自动使用先乘除後加减的原则。
注:要先加减的部分括起来即可,如:(2999+3000)/6=999
---------------------------------------
%random(i,j):返回一个>=i并<=j的随机数,如果省略j,则返回0~i间的随机数
EX:
#say %random(1,49) 会出现1到49中任一数,最少为
1,最大为
49。
#say %random(49) 会出现0到49中任一数,最小
0,最大
49
---------------------------------------
%trim(s):消除字串两端的空格
EX:
#say %trim( 超可爱龙娃娃 )>>
超可爱龙娃娃
#say %trim( 超可爱龙娃娃 )>>
超可爱龙娃娃 ,不接受全形空格!
---------------------------------------
%if(expression, true-value,false-value):
如果表达式为true,返回true-value,否则返回false-value
EX:有一个比赛结果讯息如下:
比可爱大赛超可爱龙娃娃VS 小鱼得票率<<%1:%2>>
再设一个式子:
chat %if(%1 > %2,shout 苍天无眼,世风日下!,shout 老天有眼!社会安康呀!)
如果龙娃娃赢了,就会大呼:
苍天无眼,世风日下!
如果龙娃娃没赢,就会大呼:
老天有眼!社会安康呀!
注:对例子有意见者,一样无视唷!
---------------------------------------
%case(i,s1,s2,s3...):如果i=1,值为s1,最多不超过8个,用法类似#case
EX:
#say %case(%1,超可爱龙娃娃,巴哈姆特,女王陛下,小雪子,蜜雪儿)真是神!
如果%1=1,就会显示
超可爱龙娃娃真是神!
如果%1=2,就会显示
巴哈姆特真是神!
如果%1=3,就会显示
女王陛下真是神!以下列推!
---------------------------------------
%yesno(s):显示问题s和按钮yes/no,根据按下的按钮返回true/false。参见#yesno命令
。如果显示的按钮超过两个,返回的将是按钮号,可与#case连用。如果只显
示两个按钮,可与#if命令连用以充分发挥其用途
EX:
#action %yesno(超可爱龙娃娃到底可不可爱?)
会跳出一个询问视窗,内容是
超可爱龙娃娃到底可不可爱?
按下"yes"钮,判断条件成立(ture), 按下"no"钮,判断条件成立(false)
直接在命令列输入,威力跟zmud自爆按钮差不多!(无限询问视窗!跟zmud当机差不
多了!)参考help後,采用:
#IF %yesno(超可爱龙娃娃到底可不可爱?) {shout 可爱!} {shout 小鱼才可爱!}
直接在命令列输入,会跳出问你
超可爱龙娃娃到底可不可爱?的询问视窗,
按"yes"就会大呼:
可爱!
按"no" 就会大呼:
小鱼才可爱!不用想也知道要按
这是秘密唷
---------------------------------------
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.114.251.40
1F:推 laechan :hmml, 来编辑里的 zmud 资料夹吧 10/31 01:30
2F:推 litears :推你的用心.虽然我懒的学了XD 10/31 01:36
3F:→ hmml :自用的啦!省得又要重新翻.... 10/31 01:48
4F:推 asara :推,看内建的help对我来说很吃力 10/31 01:50
※ 编辑: hmml 来自: 218.163.172.59 (11/01 01:13)
5F:推 bahatest :%delitem(s,list)屎蛋还在阿 11/01 07:42
※ 编辑: hmml 来自: 218.163.172.59 (11/01 12:40)
※ 编辑: hmml 来自: 218.163.171.99 (11/03 01:24)