http://community.youkuaiyun.com/Expert/topic/5760/5760639.xml?temp=.3635828
解此题得总结出的一段代码。备用
<!--
模拟1W条记录,速度过得去。
本法按允许集中查找待处理单词,如果允许集中存在那么就取出.最终得到一串待处理字串中含有的所有允许单词.
模拟1W条记录,速度过得去。
本法按允许集中查找待处理单词,如果允许集中存在那么就取出.最终得到一串待处理字串中含有的所有允许单词.
若还有看不明白的地方,请指出来,我再加注.总不能搞得每行加注吧?!我可没写过教程,难度很大的.
-->
<%
Dim rtype,strA
rtype =lcase(trim(request("rtype"))) ''字符串类别
strA =trim(request("strA")) ''要处理的字串.
-->
<%
Dim rtype,strA
rtype =lcase(trim(request("rtype"))) ''字符串类别
strA =trim(request("strA")) ''要处理的字串.
''调试代码
rtype ="word" ''字符串以限制为word
rtype ="number" ''字符串以限制为数值
rtype ="" ''字符串以限制为字母
strA ="abcdef 123 abcd 1234567 d abcdef 1234567 a asdf abcdef 1234 ab"
''============调试结束,以上代码非调试时请删除.
rtype ="word" ''字符串以限制为word
rtype ="number" ''字符串以限制为数值
rtype ="" ''字符串以限制为字母
strA ="abcdef 123 abcd 1234567 d abcdef 1234567 a asdf abcdef 1234 ab"
''============调试结束,以上代码非调试时请删除.
''不同类型分别处理
select case rtype
case "word": ''字符串以限制为word
response.Write(checkWords(strA))
case "number": ''字符串以限制为数值
response.Write(checkNumbers(strA))
case else: ''字符串以限制为字母,默认类别
response.Write(checkAz(strA))
end select
select case rtype
case "word": ''字符串以限制为word
response.Write(checkWords(strA))
case "number": ''字符串以限制为数值
response.Write(checkNumbers(strA))
case else: ''字符串以限制为字母,默认类别
response.Write(checkAz(strA))
end select
''字母处理函数
Function checkAz(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" a b c d "
''待处理字串中的单词在允许集中存在则提取出来.
checkAz=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkAz=checkAz&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkAz =ltrim(checkAz)
End Function
Function checkAz(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" a b c d "
''待处理字串中的单词在允许集中存在则提取出来.
checkAz=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkAz=checkAz&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkAz =ltrim(checkAz)
End Function
''数字处理函数
Function checkNumbers(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" "
for tmp_i=1 to 10000
tmp_strB=tmp_strB&"1234567 "
next
''待处理字串中的单词在允许集中存在则提取出来.
checkNumbers=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkNumbers=checkNumbers&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkNumbers =ltrim(checkNumbers)
End Function
Function checkNumbers(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" "
for tmp_i=1 to 10000
tmp_strB=tmp_strB&"1234567 "
next
''待处理字串中的单词在允许集中存在则提取出来.
checkNumbers=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkNumbers=checkNumbers&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkNumbers =ltrim(checkNumbers)
End Function
''单词处理函数
Function checkWords(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" "
for tmp_i=1 to 10000
tmp_strB=tmp_strB&"abcdef "
next
''待处理字串中的单词在允许集中存在则提取出来.
checkWords=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkWords=checkWords&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkWords =ltrim(checkWords)
End Function
%>
Function checkWords(vNewStr)
Dim tmp_str,tmp_arr,tmp_strB,tmp_arr_up,tmp_i
''待处理字串生成数组
tmp_str =vNewStr
tmp_arr =split(tmp_str," ")
tmp_arr_up =ubound(tmp_arr)
''模拟取出允许集
tmp_strB=" "
for tmp_i=1 to 10000
tmp_strB=tmp_strB&"abcdef "
next
''待处理字串中的单词在允许集中存在则提取出来.
checkWords=""
for tmp_i=0 to tmp_arr_up
if instr(tmp_strB," "&tmp_arr(tmp_i)&" ")>0 then
checkWords=checkWords&" "&tmp_arr(tmp_i)
end if
next
''返回值
checkWords =ltrim(checkWords)
End Function
%>
以上是提取,过滤更简单,请参考动网等论坛禁用语相关代码。
代码整理收集中...