Добавление текста от начала "слово" до "друго

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Добавление текста от начала "слово" до "друго

Сообщение Gmp » 31.07.2006 (Пн) 16:05

Вобщем не соображу.

Есть текстовые данные:

ммм
Слово
ааиаи
пркртпа
патапт
и т.д
Слово1
патап
Слово
вав
ууаа
ууу
Слово2
ааву
...

как мне от слово до словоX собрать данные

пусть будет
strQ = "ссм ссмм Слово ааиаи пркртпа патапт Слово1 смсм смсм Слово вав ууаа ууу Слово2 ааву"

strA = Split(strQ, " ")

получить strOut = "Слово ааиаи пркртпа патапт Слово1 vbCrLf Слово вав ууаа ууу Слово2"

Извиняйте, как со строками работать у меня завал. :)
Последний раз редактировалось Gmp 01.08.2006 (Вт) 11:37, всего редактировалось 2 раз(а).

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 31.07.2006 (Пн) 16:23

результат=строка1 & " " & строка2 & " " & ...
Быть... или не быть. Вот. В чём вопрос?

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 31.07.2006 (Пн) 16:42

uhm
Непонял что ты этим хотел показать?

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 01.08.2006 (Вт) 4:24

Gmp, strA - это же у тебя массив. Вот и работай с массивом или заполни из него коллекцию...(Найди первое слово, запомни индекс1, найди второе слово, запомни индекс2, собери нужную строку, как сказал uhm от индекса1 до индекса2)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 01.08.2006 (Вт) 13:06

Matew
Спасибо коллекции то что нужно.

Но есть проблемка когда идет
слово1
слово1
текст
текст
слово2

нужно добавлять все с 1 слово1 до слово2

Я пытаюсь это так сделать:

For iii = 1 To colS.Count - 1
If colS.Item(iii + 1) - colS.Item(iii) = 1 Then
colS.Remove (iii + 1)
End If
Next iii

В ответ "Out of Range" :)

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 01.08.2006 (Вт) 13:48

Удаляй с конца коллекции
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 01.08.2006 (Вт) 14:25

Код: Выделить всё
Dim colS As Collection
Dim strQ As String
Dim strA() As String
Dim strOut As String
Dim i As Integer

strQ = "End ddf Slovo ffg dfd ere fdf Konec Slovo drt mjkjj ere dddgg End"
strA = Split(strQ, " ")

Set colS = New Collection

For i = 0 To UBound(strA)
If strA(i) = "Slovo" Then
colS.Add i, "start" & i
ElseIf strA(i) = "Konec" Or strA(i) = "End" Then
colS.Add i, "finish" & i
End If
Next i

'??? Что здесь сделать чтобы получить strOut = "Slovo ffg dfd ere fdf Konec" vbCrLf "Slovo drt mjkjj ere dddgg End"?

Set colS = Nothing

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 02.08.2006 (Ср) 1:24

Gmp, я имел в виду что-нибудь, типо:
Код: Выделить всё
Dim strQ As String
Dim strA() As String
Dim strOut As String
Dim i As Integer, index() As Integer, j As Integer, index2() As Integer

strQ = "End ddf Slovo ffg dfd ere fdf Konec Slovo drt mjkjj ere dddgg End"
strA = Split(strQ, " ")
ReDim index(0)
index(0) = 0

For i = 0 To UBound(strA)
If strA(i) = "Slovo" Then
' тут еще можно
' IF ubound(index2) = j then
j = j + 1
ReDim Preserve index(j)
index(j) = i
' end if
ElseIf strA(i) = "Konec" Or strA(i) = "End" Then
'j = j + 1
ReDim Preserve index2(j)
index2(j) = i
End If
Next i
For j = 0 To UBound(index)
    If index2(j) > index(j) Then
        For i = index(j) To index2(j)
            strOut = strOut & " " & strA(i)
        Next i
        strOut = strOut & vbCrLf
    End If
Next j
MsgBox strOut

:)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 02.08.2006 (Ср) 12:04

Matew
Теперь понятно ReDim Preserve запоминает позицию, а я использовал Collection для этого. :) (Програмлю 3-ю неделю поэтому много чего не знаю :)) Спасибо.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 02.08.2006 (Ср) 13:55

Redim переобъявляет массив, Preserve сохраняет старые значения.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.08.2006 (Ср) 16:36

Matew писал(а):Redim переобъявляет массив, Preserve сохраняет старые значения.

Только последнее измерение.
Lasciate ogni speranza, voi ch'entrate.


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

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

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

    TopList