asp过滤特定符号【】之间的内容

2024-11-26 01:56:21
推荐回答(2个)
回答1:

一、字符串中只有一对"【】"的情况分。
1. 可以考虑用InStr()函数将"【"和"】"定位,再用MID()函数截取,最后合并。程序如下:

test1.asp
<%
s="【测试】AABBCCDD"
len_s=len(s)
s_start=instr(s,"【")
s_end=instr(s,"】")
str1=mid(s,1,s_start-1)
str2=mid(s,s_end+1,len_s)
s=str1+str2
response.write s
%>

上面的程序分解得很细,合并起来写就是:
test2.asp
<%
s="【测试】AABBCCDD"
s=mid(s,1,instr(s,"【")-1) + mid(s,instr(s,"】")+1,len(s))
response.write s
%>

2. 也可以这样考虑:将字符串按字符拆分成单个字符,将这些字符保存在一个数组中,再从这个数组中找出"【"和"】"的位置,然后将需要的部分合并。
请调试运行下面的程序。
test3.asp
<%
s="【测试】AABBCCDD"
len_s=len(s)
Redim Array_Word(len_s)
for i =1 to len_s
Array_Word(i) = Mid(s,i,1)
if Array_Word(i) = "【" then s_start=i
if Array_Word(i) = "】" then s_end=i
next
s=""
for i=1 to s_start-1
s=s + Array_Word(i)
next
for i=s_end+1 to len_s
s=s + Array_Word(i)
next
response.write s
%>

输出结果:AABBCCDD

二、字符串中"【】"有嵌套或者多处"【】"的情况。例如:
s="北国之春【在那桃花【测试】盛开的地方】AABB【思念】CCDD"
这就要考虑用堆栈的数据结构来写了...时间关系,不写程序了,需要者可以先去看《数据结构》堆栈部分的算法。

另外,就本题来说,楼上的阳光上的桥这位朋友已经提出了很好的解答方法,我说这么多,仅仅只是为了给楼主一个另外的思路。

回答2:

下面的程序代码测试通过,使用模式匹配很容易完成这样的功能:

<%
s="【测试】AABBCCDD"
Set regEx = New RegExp
regEx.Pattern = "【.*】"
s=regEx.replace(s,"")
'replace s, regEx ,""
response.write s
%>