ASP Classic - 以长字符串查找并删除

时间:2016-01-12 15:57:19

标签: vbscript asp-classic

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

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

好的,现在。我需要的只是图像本身。 thisisaimage.jpg

不是其他的东西。

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

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

但如何获得图像?

任何想法?

由于

4 个答案:

答案 0 :(得分:0)

假设[img:不变,请从左侧读取6个字符,直至下一个|

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

答案 1 :(得分:0)

我不知道vbscript,但根据文档,这应该有效

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

答案 2 :(得分:0)

我从其他网站获得了帮助。这是一个工作代码,我已经测试并运行了,对着一个超过10,000个字符的页面,这很好用!

<!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>

答案 3 :(得分:0)

如果您有两个设置参数位于图像名称之前和之后并且是常量,则这可能对您有用。 我使用这种类型的脚本从会话cookie(httponly)中提取cookie数据

使用你的例子:[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

我已经在很长的查询字符串上使用它,只要你有一个固定的起点和结束点就可以提取而不是替换。