关于ASP Classic:VBscript和InStr函数

VBscript and InStr function

我正在尝试检索"彭赞斯少校歌曲海盗"中字符串"少校"之前和之后的5个字符(位于:http://www.naic.edu /~gibson/poems/gilbert1.html)。我正在尝试找到一种比我现有的方法更好的方法,并且试图弄清为什么它没有循环。任何想法将不胜感激!

1
2
3
4
5
6
7
8
9
10
11
12
13
l1 =INSTR(l2, string,"Major-General")
l2 = 5
l3 = 1
vcount=0

if vcount <5 then
    l1 =INSTR(l3, string,"Major-General")
    vcount = vcount +1
    word = mid(string, l1-5, l2 )
    word1 = mid(string, l1+13, l2)
    l3 = l3+l1
    response.write"" &"5 before:" & word &""  &"5 after:" & word1
end if


这样做可能会更容易:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim Poem,aStr,i,block,Left5,Right5

Poem ="The abc poem is abc in this abc string."

aStr = Split(Poem,"abc")

If uBound(aStr) = 0 Then Response.Write"String not found": Response.End

For i = 0 to uBound(aStr)
  block = Trim(aStr(i))
  Left5 ="": Right5 =""
  if cStr(i) <> cStr(uBound(aStr)) then Left5 = Right(block,5)
  If cStr(i) <> cStr(0) then Right5 = Left(block,5)

  Response.Write"The 5 characters to the left of abc:" & Left5
  Response.Write"The 5 characters to the right of abc:" & Right5

Next

每次字符串存在时,它将在字符串的左侧和右侧获得5个字符。

在这种情况下,它将在Poem字符串中搜索abc,并将该字符串拆分为该字符串所在的每个部分的数组,然后可以对其进行进一步处理。