Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / получить вхождение подстроки №N? / 9 сообщений из 9, страница 1 из 1
15.02.2008, 14:15
    #35135070
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
можно ли как-то, кроме рекурсивного instr, получить вхождение подстроки А в Б с определенным номером?

т.е.
Код: plaintext
1.
2.
s1="mama.mama.moma.bla-bla-bla"
'нужно как-то получить точку перед мома, а будет - перед мама (первая)
iPlace= instr(s1,".")
...
Рейтинг: 0 / 0
15.02.2008, 14:39
    #35135206
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Во-первых Instr самая быстрая функция для таких целей, во-вторых это можно сделать в цикле без рекурсии.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function SuperInstr(strSource as String, strFind as String, Index as Integer) as Long
dim x as Long
dim y as Integet
    On error Goto errh
    while y<>Index
        x=Instr(x+ 1 ,strSource,strFind)
        y = y +  1 
    Wend
    SuperInstr = x
errh:
End Function
...
Рейтинг: 0 / 0
15.02.2008, 14:57
    #35135309
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
т.е. без цикла и без рекурсии никак?
некрасиво выходит...
...
Рейтинг: 0 / 0
15.02.2008, 15:17
    #35135399
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Фрилансерт.е. без цикла и без рекурсии никак?
некрасиво выходит...
А чего это вдруг рекурсия стала не красивой?
...
Рейтинг: 0 / 0
15.02.2008, 15:54
    #35135586
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Код: plaintext
1.
2.
3.
4.
5.
Sub f()
    s1 = "mama.mama.moma.bla-bla-bla"
    a = Split(s1, ".")
    b = a(UBound(a))
    C = Len(s1) - Len(b)
End Sub
...
Рейтинг: 0 / 0
15.02.2008, 15:54
    #35135589
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Фрилансерт.е. без цикла и без рекурсии никак?
некрасиво выходит...Вам шашечки или ехать?
...
Рейтинг: 0 / 0
16.02.2008, 09:54
    #35136715
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
x = "mama.mama.moma.bla-bla-bla"
y = InStr(1, Application.Substitute(x, ".", "|", 2), "|")
Debug.Print y
...
Рейтинг: 0 / 0
16.02.2008, 09:55
    #35136716
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Deggasad
Код: plaintext
1.
2.
x = "mama.mama.moma.bla-bla-bla"
    y = InStr( 1 , Application.Substitute(x, ".", "|",  2 ), "|")
    Debug.Print y
...
Рейтинг: 0 / 0
16.02.2008, 12:43
    #35136798
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить вхождение подстроки №N?
Надо регулярные выражения применять если не хотите изобретать велосипед.

Код: plaintext
1.
2.
3.
   Dim R As New VBScript_RegExp_55.RegExp
   R.Global = True
   R.Pattern = "\."
   Debug.Print "Позиция второй точки =" & R.Execute("mama.mama.moma.bla-bla-bl")( 1 ).FirstIndex
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / получить вхождение подстроки №N? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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