Instr по маске?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Instr по маске?

Сообщение |kerish| » 14.10.2005 (Пт) 1:52

Как найти в тексте нужную строку по маске.
Чтобы работало, например как это - Instr ("Kerish", "K*rish") = 1

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Instr по маске?

Сообщение Andrey Fedorov » 14.10.2005 (Пт) 7:39

|kerish| писал(а):Как найти в тексте нужную строку по маске.
Чтобы работало, например как это - Instr ("Kerish", "K*rish") = 1


Такая маска несколько глуповата... Ну "K?rish" - еще можно понять...

Перебор, со сравнением по LIKE, разве что...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.10.2005 (Пт) 11:34

Подключить библиотеку регулярных выражений от MS, там было, насколько я помню...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 14.10.2005 (Пт) 16:07

Andrey Fedorov Это просто пример.
GSerg Не хотелось бы подключать посторонние библиотеки к проекту.

Ладно, буду свою функцию писать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.10.2005 (Пт) 16:30

Свой парсер регулярных выражений?
Э... ну давай...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 14.10.2005 (Пт) 16:53

Можно использовать оператор Like.
"Kerish" Like "K*rish"
"Kerish" Like "*K*rish*"
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.10.2005 (Пт) 16:58

И как, используя оператор Like, можно узнать, в какой позиции произошло совпадение?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 14.10.2005 (Пт) 19:33

GSerg писал(а):И как, используя оператор Like, можно узнать, в какой позиции произошло совпадение?..
Код: Выделить всё
Dim nCount as Long
nCount=Len(sMyString)-Len(sMyPattern)+1
Do
  nCount=nCount-1
  if nCount < Len(sMyPattern) then Exit Do
Loop While Not Right$(sMyString,Len(sMyString)-nCount) Like sMyPattern
:lol: :lol:

P.S.: ну может где-нибудь +-1, неохота думать :) Правда так последнее совпадение найдем, а первое чере лефт$, но ессно и первое и последнее совпадение помимо Left$ и Right$ еще и через ... :@: , но ты не ставил условия, что бы по человечески, ты спросил - как :)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 83

    TopList