1 (изменено: -TOXA-, 2012-09-02 15:45:56)

Тема: VBScript: Поиск символов и слов в тексте/строке

Здравствуйте, доброго времени суток, помогите, пожалуйста. Я еще не очень знаю VBS и у меня возник вот такой вопрос. Я видел некоторые скрипты, в которых участвует поиск слов или букв в тексте. Но я не могу разобрать, и понять что к чему. Я думаю можно попробовать сделать массив, где каждый интервал равен букве, но это будет и долго, и как-то не правильно, можно ли сделать как-нибудь поиск букв, или чтобы каждая буква была равна значению интервала массива. Можно с примерами или с комментариями? Мне это не срочно, но для "самопознания".

Программист - это не профессия, а смысл жизни (с)

2

Re: VBScript: Поиск символов и слов в тексте/строке

RegExp

3

Re: VBScript: Поиск символов и слов в тексте/строке

dab00, спасибо, посмотрю...

Программист - это не профессия, а смысл жизни (с)

4

Re: VBScript: Поиск символов и слов в тексте/строке

dab00 пишет:

RegExp

Очередной расточительный бред.
А всё от незнания и неумения рационально пользоваться возможностями языка.
Зачем задействовать экскаватор когда нужно вскопать грядку?
Бухгалтеры, блин… =\

-TOXA-, функции Mid() и InStr()

I angry and terrible gray wolf,
I  know the sense in the piglets. RRRR!! =@

5

Re: VBScript: Поиск символов и слов в тексте/строке

K†ber_punk, интересно это все, но это я смотрел:) Вообще хорошие функции, но я хотел что-то другое, например если в делфи, то a[3] это текст а, и символ 3, так можно делать и циклы for next для проверки символов из всего цикла. В VBS это не доступно, и я подумал, может как-то можно сделать типа что бы создать массив, и количество элементов в нем было равно количеству символов текста, потом сделать цикл типа того:

m - Массив

For a = 0 To UBound(m)
If m(a) = "П" Then MsgBox m(a)
Next

Это к примеру, просто, если, конечно, можно задать каждую букву под элемент массива.

Программист - это не профессия, а смысл жизни (с)

6

Re: VBScript: Поиск символов и слов в тексте/строке

Не совсем понятна ваше итоговая цель. Зачем нужен этот посимвольный перебор? Поясните более предметно, наверняка, найдется несколько более продуктивных решений.

Если текст крупный, то он наверняка он будет считывать из файла, тогда возможно просто посимвольное чтение.

Dim fso
Set fso = CreateObject("scripting.filesystemobject")

Set file=fso.OpenTextFile("C:\text.txt",1,True)

Do While Not file.AtEndOfStream
    MsgBox file.Read(1)
Loop

file.Close

7 (изменено: K†ber_punk, 2012-09-03 00:49:50)

Re: VBScript: Поиск символов и слов в тексте/строке

Можно конечно и массивом, только текст надо будет сначала зарядить в этот массив.
Но в итоге это "велосипедостроительство" будет сильно влиять на скорость обработки.
Строка - это последовательность байт, а массив - это уже структура данных с ячейками, обрабатывать которую куда сложнее и подольше. Грубо говоря.
Это в паскале строка - это изначально массив символов. В VB всё немного иначе и проще.

m = "Некая П-строка"
For i=1 to Len(m)
    if Mid(m,i,1)="П" then MsgBox Mid(m,i,1),,i
next

В данном случае, i - это и есть тот самый "индекс элемента в строке-символьном массиве".

I angry and terrible gray wolf,
I  know the sense in the piglets. RRRR!! =@

8 (изменено: -TOXA-, 2012-09-03 01:18:16)

Re: VBScript: Поиск символов и слов в тексте/строке

K†ber_punk, это все понятно, спасибо, не знал Mid можно так использовать...Спасибо

moobi, кстати можно попробовать и так, хорошая идея, только вот он наверно будет читать не посимвольно, а символов от начала:

Set a = CreateObject("Scripting.FileSystemObject")
Set b = a.OpenTextFile("text.txt",1,True)
For i = 1 To Len(b.ReadAll)
If b.Read(i) = "П" Then MsgBox "Буква П"
Next

b.Close

Set b = Nothing

Или же вообще работать не будет

Вот этот действует лучше

a = "Какой-нибудь текст с буквой п"
For i = 1 To Len(a)
    If Mid(m,i,1) = "п" Then MsgBox "Ты ввел П. Это "& i &" символ."
Next
Программист - это не профессия, а смысл жизни (с)

9

Re: VBScript: Поиск символов и слов в тексте/строке

-TOXA- пишет:

скрипты, в которых участвует поиск слов или букв в тексте

Давайте уточним.

Вам необходимо искать точное вхождение подстрок?
Тогда Вам подойдут функции Left, Right, Mid, InStr.

Если Вам необходимо искать строки, которые не просто содержат заданные подстроки, а соответствуют определенному образцу.
В таком случае надо использовать RegExp.

( 2 * b ) || ! ( 2 * b )

10

Re: VBScript: Поиск символов и слов в тексте/строке

-TOXA- пишет:

K†ber_punk, интересно это все, но это я смотрел:)

Скорее наверно, "только лишь посмотрел, но не вникал и даже не пробовал."?

не знал Mid можно так использовать

Вообще, mid именно в таких случаях и применяется.

I angry and terrible gray wolf,
I  know the sense in the piglets. RRRR!! =@

11

Re: VBScript: Поиск символов и слов в тексте/строке

K†ber_punk и Rumata, я же сказал, я пока что новичок, а эта тема мне не срочно, для знания, так как пригодиться в будущем, а на счет функций Left, Right, Mid я просто не понимал что они делают так как они были написаны "Трудный" для меня языком. Спасибо что привели примеры и дали функции...

Программист - это не профессия, а смысл жизни (с)