想写个随机显示的函数,当用户输入:[rndtxt]内容1|内容2|内容3[/rndtxt],结果是随机显示其中一个内容。关键代码如下,现在的问题是加了代码后没反应,原样输出。
- VBScript code
if instr(1,strContent,"[/rndtxt]",1)>0 then re.Pattern="(\[rndtxt\])(.[^\[]*)(\[\/rndtxt\])" myarray=split("$2","|") strContent=re.Replace(strContent,myarray(int(rnd()*ubound)+1)) end if
------解决方案--------------------
- VBScript code
Randomize s="~[rndtxt]内容1|内容2|内容3[/rndtxt]~afefefe~[rndtxt]内容4|内容5|内容6[/rndtxt]~[rndtxt]内容1|内容2|内容3[/rndtxt]" set rx=new regexp rx.ignorecase=true rx.global=true rx.pattern="\[rndtxt\]([\s\S]+?)\[/rndtxt\]" set mc=rx.execute(s) for each m in mc arr=split(m.submatches(0),"|") s=replace(s,m.value,arr(int(rnd()*ubound(arr))),1,1)'正则替换没有只执行一次的替换,所以改为replace方法 next set rx=nothing response.write s