Опять строки...

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

Опять строки...

Сообщение Gmp » 21.08.2006 (Пн) 12:13

Имею такое:

ddd|d|34
ddd|d
ddd|d
ddd|d|67
ddd|d|67
aaa|a|45
aaa|a|45
aaa|d
aaa|d
aaa|d
aaa|d|43

сделать нужно такое:
ddd|d|34
ddd|d|67
ddd|d|67

ddd|d|67
ddd|d|67
aaa|a|45
aaa|a|45
aaa|d|43
aaa|d|43
aaa|d|43

aaa|d|43


Код: Выделить всё
Dim s As String
Dim ss As String
Dim so As String
Dim a() As String
Dim i As Integer
Dim ii As Integer

s = "ddd|d|34 ddd|d ddd|d ddd|d|67 ddd|d|67 aaa|a|45 aaa|a|45 aaa|d aaa|d aaa|d aaa|d|43"
a = Split(s, " ")

For i = 0 To UBound(a)

If Len(a(i)) - Len(Replace$(a(i), "|", "")) = 1 Then
'Здесь я пытася сделать это, но получался бред :)
End If

so = so & a(i) & vbCr
Next i

msgbox so
Последний раз редактировалось Gmp 21.08.2006 (Пн) 12:23, всего редактировалось 1 раз.

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

Сообщение alibek » 21.08.2006 (Пн) 12:15

Можешь словами объяснить, что тебе надо?
Lasciate ogni speranza, voi ch'entrate.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 21.08.2006 (Пн) 12:19

ИМХО он хочет убрать строки у корорых окончание не на цифру и "|"
#define ROFL 0xDDDD

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

Сообщение Gmp » 21.08.2006 (Пн) 12:19

Там где нет 3 элемента после разделителя добавить из первого полного следующего где есть.

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

Сообщение alibek » 21.08.2006 (Пн) 12:20

Поднимайся снизу вверх, запоминай окончание каждой строки, если в очередной строке окончания нет, добавляй сохраненное.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Gmp » 21.08.2006 (Пн) 12:21

alibek
Пытался, неполучилось, можно примерчик?

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 21.08.2006 (Пн) 12:52

Ты что не можешь взять последние 3 символа и запомнить их?
#define ROFL 0xDDDD

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

Сообщение Gmp » 21.08.2006 (Пн) 13:03

DirectXManiac
Да тут не все так просто как кажется. ;)

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

Сообщение alibek » 21.08.2006 (Пн) 13:04

Gmp писал(а):Пытался, неполучилось, можно примерчик?

Пожешь показать, что ты пытался и что не получилось?
Потому что мне непонятно, что в моих четырех фразах можно понять неправильно.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Gmp » 21.08.2006 (Пн) 13:11

alibek
Я не знаю как это реализуется поэтому попросил пример.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 21.08.2006 (Пн) 13:25

Gmp
для данного случая, я думаю так:
Код: Выделить всё
For i = UBound(a) To 0 Step -1
If Len(a(i)) > 5 Then x = Right$(a(i), 3)
If Len(a(i)) = 5 Then a(i) = a(i) & x
Next i

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

Сообщение alibek » 21.08.2006 (Пн) 13:25

Код: Выделить всё
For I = UBound(S) To LBound(S) Step -1
  If Len(S(I)) = 5 Then
    If P1 = S(I) And Len(P2) > 0 Then S(I) = S(I) + P2
  Else
    P1 = Left$(S(I), 5)
    P2 = Right$(S(I), 3)
  End If
Next I


З.Ы. Надеюсь, ты копипастить не будешь, т.к. этот пример в практическом применении почти бесполезен.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение alibek » 21.08.2006 (Пн) 13:26

XPAHuTEJIb, у тебя в коде минимум два бага.
Lasciate ogni speranza, voi ch'entrate.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 21.08.2006 (Пн) 13:54

alibek
Код практически такой же. К чему лишние проверки? Можно было одной строкой обойтись...тормознул.
У меня прекрасно работает. Хотя, спорить бесполезно :)

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

Сообщение alibek » 21.08.2006 (Пн) 14:12

Подумай, что будет для ddd|d, aaa|a|34. Подсказываю. Будет ddd|a|34.
Lasciate ogni speranza, voi ch'entrate.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 21.08.2006 (Пн) 14:25

как так? :)
в х записываются последние 3 символа следующего элемента, если его длина больше 5 т.е. "|34"
а потом прибавляются к текущей строке, если ее длина равна 5, т.е. будет "ddd|d" + "|34"
одной строкой красивее:
Код: Выделить всё
For i = UBound(a) To 0 Step -1
If Len(a(i)) > 5 Then x = Right$(a(i), 3)  else a(i) = a(i) & x
Next i

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

Сообщение alibek » 21.08.2006 (Пн) 20:25

Ты не понял.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 13

    TopList