Vbscript ASP经典-在长字符串中查找并删除

Vbscript ASP经典-在长字符串中查找并删除,vbscript,asp-classic,Vbscript,Asp Classic,我需要在一个很长的字符串中找到一些文本,并删除开头和结尾 示例:[proimg:thisisaimage.jpg]这是我[/proimg] Dim str, j, strTemp str = "[proimg:thisisaimage.jpg]this is me[/proimg]" If InStr(str,"proimg:") Then j = InStrRev(str,"proimg:") If j > 0 Then strTemp = Mid(str,

我需要在一个很长的字符串中找到一些文本,并删除开头和结尾

示例:[proimg:thisisaimage.jpg]这是我[/proimg]

Dim str, j, strTemp
str = "[proimg:thisisaimage.jpg]this is me[/proimg]"
If InStr(str,"proimg:") Then
   j = InStrRev(str,"proimg:")
     If j > 0 Then
       strTemp = Mid(str,j+7)
     End If
   j = InStr(strTemp,".jpg") 
     If j > 0 Then
        strTemp = Left(strTemp,j-0)
     End If
str = strTemp
End If
好的,现在。我需要的只是图像本身。thisisaimage.jpg

不是其他的东西

我可以找到并替换我测试过的,它会找到并替换

<%txt = ReplaceChar("[proimg:")
response.Write replace(txt, "proimg","MyImg")%>

但是,如何获得图像呢

有什么想法吗


谢谢

假设
[img:
是常数,从它的左边读6个字符直到下一个

pos = instr(str, "[img:")
str = mid(str, pos + 5, instr(pos, str, "|") - (pos + 5))

我不知道vbscript,但根据文档,这应该可以工作

split1 = Split(str,'|',1) 
split2 = Split(split1(0),':')
txt = split2(1)

我从另一个网站得到了帮助。这是一个工作代码,我已经在一个超过10000个字符的页面上测试并运行了它,它工作得很好

<!DOCTYPE html>
<html>
 <body>
String search example from @delradie 12/1/2016
<br />
<br />
<%
Dim StartPosition
 Dim EndPosition
 Dim Output
 Dim Input

 Input = "[proimg:thisisaimage.jpg]this is me[/proimg]"

 StartPosition = InStr(Input, "[proimg:")

 If (StartPosition >= 0) Then
   StartPosition = StartPosition + 8
   EndPosition = InStr(StartPosition , Input, "]")

            if(EndPosition > StartPosition) Then
                  Response.Write(Mid(Input, StartPosition , (EndPosition - StartPosition)))
            Else
                  Response.Write("End Not Found")
            End If
   Else   
   Response.Write("Start Not Found")
 End If
 %>
 </body>
 </html>

@delradie 12/1/2016中的字符串搜索示例


=0)然后 起始位置=起始位置+8 EndPosition=InStr(起始位置,输入“]”) 如果(结束位置>开始位置),则 写入(中间(输入,起始位置,(结束位置-起始位置))) 其他的 响应。写入(“未找到结束”) 如果结束 其他的 响应。写入(“未找到开始”) 如果结束 %>
如果您有两个设置参数位于图像名称之前和之后,并且是常量,则这可能适用于您。 我使用这种类型的脚本从会话cookie中提取cookie数据(仅httponly)

用你的例子:[proimg:thisisaimage.jpg]这是我[/proimg]

Dim str, j, strTemp
str = "[proimg:thisisaimage.jpg]this is me[/proimg]"
If InStr(str,"proimg:") Then
   j = InStrRev(str,"proimg:")
     If j > 0 Then
       strTemp = Mid(str,j+7)
     End If
   j = InStr(strTemp,".jpg") 
     If j > 0 Then
        strTemp = Left(strTemp,j-0)
     End If
str = strTemp
End If

我已经在非常长的查询字符串上使用了它,只要您有一个固定的起点和终点,就可以提取而不是替换

谢谢你的尝试。它是一个很长的字符串,所以可以有50个或1000个字符,这个对象在它的中间…因此,不幸的是,您提供的代码在这种情况下不起作用…编辑以查找
[img:
,如果您可以这样做,则可以在任何地方查找[img:tag,那么它可能会工作..?我收到了这个错误。如果在img之前有另一个|的话,就会发生无效的过程调用或参数:'Mid',上面已经修复。我在我的代码上犯了一个错误,所以|不存在。这是一个]请再次查看我在代码上的原始帖子。是]就在图像之后,字符串中出现的第一个吗?如果是这样,您只需替换split1=Split(str,']',1)谢谢lyz,但我能够从另一个源代码中获得执行此任务的代码。请看我贴的答案。保重,谢谢你的帮助。