Делаем присваивание в VBscript сейчас .. Нужно указать позиции каждого «е» в строке - PullRequest
0 голосов
/ 30 апреля 2011

Я сделал это в JavaScript, но само собой разумеется, что я не могу просто поменять его местами.

В Jscript я использовал это:

 var estr = tx_val
 index = 0
 positions = []

 while((index = estr.indexOf("e", index + 1)) != -1)
 {
     positions.push(index);
 }

document.getElementById('ans6').innerHTML = "Locations of 'e' in string the are: " 
+ positions;

Я пытался использовать ту же логику с терминами VBS, т.е. присоединение, я также пытался использовать InStr. Я просто не знаю, как вытащить это «е» ... Может быть, я попытаюсь заменить его другим персонажем.

Вот что я пробовал с VBScript. Я попытался использовать InStr и заменить, чтобы вырвать первое вхождение 'e' в каждом цикле и заменить его на 'x'. Я подумал, что, возможно, из-за этого следующий цикл покажет местоположение следующего 'e'. - Когда я не получаю нижний индекс из-за ошибки 'i', я получаю только одно местоположение из сценария и его 0.

(6) показывает расположение каждого вхождения символа «e» в строке «tx_val» в блоке span с id = "ans6"

countArr = array()
countArr = split(tx_val)
estr = tx_val
outhtml = ""
positions = array()
i=0
for each word in countArr
i= i+1
positions(i) = InStr(1,estr,"e",1)
estr = replace(estr,"e","x",1,1)

next

document.getElementById("ans6").innerHTML = "E is located at: " & positions

Что я могу сделать, что проще, чем это и работает? и спасибо заранее, вы все очень помогли.

ВНОВЬ РЕДАКТИРОВАТЬ: Наконец-то я все заработал. Я не на 100% как. Но я пробежал логику в своей голове несколько десятков раз, прежде чем написал ее, и после нескольких изломов она работает.

 local = ""
 simon = tx_val
 place=(InStr(1,simon,"e"))
 i=(len(simon))
 count = tx_val

 do
local = (local & " " & (InStr((place),simon,"e")))
place = InStr((place+1),simon,"e")
count = (InStr(1,simon,"e"))
 loop while place <> 0

 document.getElementById("ans6").innerHTML= local

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

Вы можете попробовать split().Например, простая строка, подобная этой:

string = "thisismystring"

Разделить на "s", поэтому у нас есть

mystring = Split(string,"s")

Так вмассив mystring, у нас есть

thi   i   my  tring
 ^    ^    ^    ^
[0]  [1]  [2]  [3]

Все, что вам нужно сделать, это проверить длину каждого элемента массива, используя Len().Например, позиция 0 имеет длину 3 (thi), поэтому «s» находится в позиции 4 (которая является индексом 3).Запишите эту длину и сделайте для следующего элемента.Длина элемента 1 равна 1, поэтому мы добавляем его к 4, чтобы получить 5 и т. Д.

@ Update, вот пример использования vbscript

thestring = "thisismystring"
delimiter="str"
mystring = Split(thestring,delimiter)
c=0
For i=0 To UBound(mystring)-1
    c = c + Len(mystring(i)) + Len(delimiter)
    WScript.Echo "index of s: " & c - Len(delimiter) 
Next

Trial:

C:\test> cscript //nologo test.vbs
index of str is: 8
0 голосов
/ 30 апреля 2011

InStr имеет немного отличающиеся параметры от indexOf:

InStr([start, ]string, searchValue[, compare])
  • start: индекс, с которого начинается поиск
  • string: строка для поиска
  • searchValue: строка для поиска

Также обратите внимание, что Visual Basic индексирует строки, начинающиеся с 1, поэтому все значения индекса ввода и возврата на 1 больше исходного JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...