2014-09-25 2 views
0

Я пытаюсь получить 5 символов до и после строки «Генерал-майор» в «Пирате» Пензанс Генерал-майор Песня (найдено здесь: http://www.naic.edu/~gibson/poems/gilbert1.html). Я пытаюсь найти лучший способ сделать это, чем то, что у меня есть, а также попытаться понять, почему он не зацикливается. Благодарим за любую идею!Функция VBscript и InStr

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 "<br>" & "5 before: " & word & "<br>" & "5 after: " & word1 
end if 
+3

_ «пытаясь понять, почему он не зацикливается» _ хорошо, потому что на самом деле я не вижу никакого цикла в этом коде ... –

+0

Достаточно честный. Есть ли лучший способ сделать это, чем использовать mid() таким образом? Это кажется неуклюжим. –

ответ

0

Это может быть проще сделать это следующим образом:

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 и разбивать строку на массив каждой части, где существует строка, а затем ее можно обрабатывать дальше.

+0

Большое вам спасибо! –

+0

Добро пожаловать. –

Смежные вопросы