Поиск текста в тексте!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Поиск текста в тексте!

Сообщение TiG » 10.07.2003 (Чт) 13:30

Привет!
Не ругайтесь пожалуста, я знаю что наверняка эта тема обсуждалась неоднократно, но у меня очень плохо работает интернет и нет возможности поискать.

короче есть текст:

$RRR,TTT,4543,786,3224,435345>$FFF,345,GRG,ERTE,3453,REET,3535>

Мне нужно найти в нём начало определённых данных, заголовок, которых FFF. Далее после того как мы его нашли нам нужно двигаться вправо и копировать данные в разные места (текстбоксы) где разделителем их будет запятая, а конец нужного диапозона данных будет > либо начало следующего, т.е. $.
Все мои игрушки мама разметало ураганом...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 10.07.2003 (Чт) 13:42

Код: Выделить всё
InStr()

Ищешь сначала вхождение "$FFF", затем ">" или "$". Вырезаешь найденную подстроку Mid$(), заливаешь её в массив Split() с разделителем ",", укорачиваешь исходную строку или двигаешь указатель позиции. Повторяешь пока не надоест :D.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 10.07.2003 (Чт) 14:10

:) Круто было
Я некоторых терминов на сленге не понял (заливаешь...)
Если можно напиши полный код плз на данный пример
Все мои игрушки мама разметало ураганом...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 10.07.2003 (Чт) 14:33

Код: Выделить всё
Option Explicit

Public Function test(ByVal Expression As String)
   
    Dim p1&, p2&, p21&, p22&
    Dim s$, i&, a() As String
   
    p2 = 1
    Do
       
        p1 = InStr(p2, Expression, "$FFF", vbTextCompare)
        If (p1 = 0) Then Exit Do 'start not found
       
        p1 = p1 + 5 '+ comma
       
        p21 = InStr(p1, Expression & "$", "$", vbTextCompare)
        p22 = InStr(p1, Expression & ">", ">", vbTextCompare)
        If (p21 < p22) Then p2 = p21 Else p2 = p22
       
        s = Mid$(Expression, p1, p2 - p1)
       
        a = Split(s, ",")
        For i = 0 To UBound(a)
            'custom code here
            Debug.Print a(i),
        Next
        Debug.Print
       
    Loop
   
    Erase a()
   
End Function


Immediate:
Код: Выделить всё
?test("$RRR,TTT,4543,786,3224,435345>$FFF,345,GRG,ERTE,3453,REET,3535>$FFF,345,GRG,ERTE,3453,REET,3535>$FFF,345,GRG,ERTE,3453,REET,3535$FFF,345,GRG,ERTE,3453,REET,3535")
345           GRG           ERTE          3453          REET          3535         
345           GRG           ERTE          3453          REET          3535         
345           GRG           ERTE          3453          REET          3535         
345           GRG           ERTE          3453          REET          3535         

А вообще-то все функции уже были даны. Интернет для их изучения совершенно не нужен. Все параметры можно посмотреть в Object Browser (F2).

Так что пользуйся случаем, я сегодня добрый.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 10.07.2003 (Чт) 14:42

Сенкс, буду разбираться.
8)
Все мои игрушки мама разметало ураганом...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 11.07.2003 (Пт) 8:31

Привет! Разобрался, но не полностью.
Вырезать нужный фрагмент и поместить его в текстбокс удалось
Как быть с тем что нужно раскидать значения между запятыми в отдельные текстбоксы.
Получилась такая строка $FFF,12,13,13
мне нужно чтобы значение между первыми запятыми попало в текстбокс3, значение между вторыми запятыми попало в текстбокс4.

Напишите плз код.

Вот моя ересь, см ниже.

Private Sub Command1_Click()
p1 = InStr(1, Text1.Text, "$FFF", vbTextCompare)
If p1 > 0 Then
p2 = InStr(p1, Text1.Text, ">", vbTextCompare)
End If
If p2 - p1 > 0 Then
Text2.Text = Mid$(Text1.Text, p1, p2 - p1)
Else
Text2.Text = ""
End If


End Sub

Private Sub Command2_Click()
Text1.Text = "jgfuygvlib,ygiyv,uhu$FFF,12,13,13> 111111111111111111111111 57674567 56747 ,jbkfjg ejbge ejrup98545 uhtg hd570ht eouryt[803yt ouhetoeh 4085 FFF,78,45,23,jfg>"
End Sub
Все мои игрушки мама разметало ураганом...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 14.07.2003 (Пн) 12:41

$%/&%)(/&)(/&()=&%/%&/(%/&))(/&/( сказал боцман и грязно выругался! :evil:
Код: Выделить всё
        a = Split(s, ",")
        For i = 0 To UBound(a)
            'custom code here
            Debug.Print a(i),
        Next
        Debug.Print

Тут же чёрным по экрану понаписано "здесь пользовательский код"! Или это так для красивости? Посмотри чего в массиве a() понапихано, может какие мысли появятся.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 18.07.2003 (Пт) 7:34

Да не получается у меня как ты написал! Я вообще не понимаю что обозначает print(чего там печатать?), debug (чего там отлаживать), я новичок и в массов не врубаюсь. Как это в текстбоксы запихать?
Все мои игрушки мама разметало ураганом...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 21.07.2003 (Пн) 11:01

Разобрался! Всем большое спасибо!
Все мои игрушки мама разметало ураганом...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.07.2003 (Пн) 12:38

Ура!!!

Кстати, в подписи надо либо слово "мама" выделить запятыми (т.к. она является лицом к которому обращена сия жалоба), либо окончание слова "разметало" заменить на "а" (тогда получится, что мама выступает в качестве урагана и жаловаться ей на неё же бессмысленно).


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList