Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти .FirstIndex с помощью функции RegExp?! / 8 сообщений из 8, страница 1 из 1
22.07.2009, 18:17
    #36103844
DasTin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
Есть функция, мне необходимо найти FirstIndex всех "Е" в строке:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Function PosFind2(filepath) As String
Dim f611 As Long
Dim data As String

Dim myRegExp As New RegExp
With myRegExp
.MultiLine = False
.Global = True
.IgnoreCase = False
.Pattern = "Е"
End With

Dim colMatches As MatchCollection

f611 = FreeFile
Open filepath For Input As #f611
r =  0 

Do Until EOF( 1 )
Line Input #f611, data

If myRegExp.Test(data) Then
Set colMatches = myRegExp.Execute(data)

PosFind2 = colMatches( 0 ).FirstIndex

Exit Do

End If

Loop

Close #f611

End Function


Проблема в том, что я могу найти только одну позицию конкретной "Е".
Как написать, чтобы моя функция PosFind2 выдавала сразу все найденные FirstIndex всех "Е"??

Если записать PosFind2(filepath, x), PosFind2 = colMatches(x).FirstIndex, то функция каждый раз будет искать строку заново и только потом позицию следующей "Е", что не подходит.

Помогите, кто как видит решение?!!!
...
Рейтинг: 0 / 0
22.07.2009, 18:48
    #36103931
BION
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
DasTin,

А не проще ли закинуть в цилк что-то типа:
Код: plaintext
pos = InStr( pos +  1 , LCase( str ), "е" )
Или позицию задавать регэксп объекту.
Т.е. с каждой итерацией начинать поиск с последней найденной позиции в строке.
...
Рейтинг: 0 / 0
22.07.2009, 20:21
    #36104100
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
DasTinПомогите, кто как видит решение?!!!Аксиома: функция может возвращать только одно значение.
Как ты планируешь получить несколько значений из функции?
...
Рейтинг: 0 / 0
22.07.2009, 21:19
    #36104162
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
Код: plaintext
1.
2.
3.
4.
Function PosFind2(filepath, x)
…
.Pattern = "(E)"
…
PosFind2 = colMatches( 0 ).SubMatches(x)


Jah loves you.
...
Рейтинг: 0 / 0
24.07.2009, 13:03
    #36107566
DasTin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
BION
Или позицию задавать регэксп объекту.
Т.е. с каждой итерацией начинать поиск с последней найденной позиции в строке.

Как задать позицию, если можно, в кратце.
...
Рейтинг: 0 / 0
24.07.2009, 13:57
    #36107721
DasTin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
White Owl,

Ну а как на счёт массива данных?

Функция хранит все полученные значения, а выводить, например как PosFind2(0), PosFind2(1), PosFind2(2)
...
Рейтинг: 0 / 0
24.07.2009, 18:04
    #36108589
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
DasTinНу а как на счёт массива данных?Молодец, начинаешь думать. Функция должна возвращать либо массив, либо коллекцию.
А теперь подумай еще над одним вопросом: если у тебя в файле с исходными данными несколько строк будут содержать букву "E"? Что ты тогда собираешься делать?
...
Рейтинг: 0 / 0
17.08.2009, 14:02
    #36147682
DasTin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти .FirstIndex с помощью функции RegExp?!
White Owl..если у тебя в файле с исходными данными несколько строк будут содержать букву "E"? Что ты тогда собираешься делать?

Ну это уже другой вопрос, буду, например, брать только стоку, в которой первый раз выпадет буква "E".

В моём случае, лишь одна строка содержит букву "E".
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти .FirstIndex с помощью функции RegExp?! / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]