Мне нужно найти количество 3, 4, 5 и 6 буквенных слов в строке, используя VBScript - PullRequest
2 голосов
/ 30 апреля 2011

Вот вопрос, на который я должен ответить для моего задания:

Подсчитайте количество слов в строке "tx_val", которые имеют 3,4,5 или 6 чатактеров. Показать эти четыре числа в одной строке, разделенной запятыми в блоке span id="ans12".

Вот то, что я придумал, вывод неправильный, и я не уверен, почему. Я выложу ниже. Думаю, я дам вам все, где я был с ней.

threematch = 0
fourmatch = 0
fivematch = 0
sixmatch = 0
totalmatch = ""

cntArr = Array()
cntArr = Split(tx_val," ")
i=0

For i=0 To Ubound(cntArr) Step 1
If len(cstr(cntArr(i))) = 3 Then
    threecount = threecount + 1
ElseIf len(cstr(cntArr(i))) = 4 Then
    fourcount = fourcount + 1
ElseIf len(cstr(cntArr(i))) = 5 Then
    fivecount = fivecount + 1
ElseIf len(cstr(cntArr(i))) = 6 Then
    sixcount = sixcount + 1
End If
i=i+1

Next 

totalmatch = (threecount & ", " & fourcount & ", " & fivecount & ", " & sixcount & ".")

document.getElementById("ans12").innerHTML = totalmatch

Ответы [ 3 ]

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

Если вам удобно использовать регулярные выражения в JavaScript, почему бы не использовать их в VBScript?Они оба используют один и тот же ECMA-262, поэтому шаблоны для обоих языков идентичны.Объект RegExp в VBScript может делать то же самое, что и ваш пример.

Set re = New RegExp
re.IgnoreCase = True     ' equivalent to /i modifier
re.Global = True         ' equivalent to /g modifier
re.Pattern = "\b\w{3}\b" ' regex pattern without delimiters or modifiers
Set colMatches = re.Execute(someStringOfWords)
intCount = colMatches.Count

Чтобы узнать больше о регулярных выражениях в VBScript, зайдите в MSDN и прочитайте Microsoft усиливает VBScript с помощью регулярных выражений .

1 голос
/ 01 мая 2011

Во-первых, это то, что вызывает неправильное поведение, вы явно увеличиваете свой счетчик i, хотя цикл For-Next уже делает это для вас. В результате при каждом проходе через цикл значение i увеличивается на 2.

Удалите строку i=i+1, и ваш скрипт будет работать так, как задумано.

Во-вторых, ваши имена переменных не согласованы, и инициализируются, например, как. threematch и позже используется как threecount. Вы должны всегда объявлять свои переменные явно (Dim операторы) и писать Option Explicit вверху вашего кода, чтобы отлавливать такие очевидные ошибки во время компиляции. По чистой случайности эта ошибка на самом деле не вызывает никаких ошибок в вашем конкретном случае.

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

разбить проблему:

1) Извлечь все слова (разбить на пробел) в список

2) Выполните итерацию по списку, проверяя, какие слова имеют указанное количество символов, увеличивайте счетчик каждый раз, когда появляется соответствующая длина слова.

3) Запишите общее количество

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