Отсечение части фразы

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

Отсечение части фразы

Сообщение Чудик » 17.08.2005 (Ср) 19:01

Есть фраза типа -"Яблоко (шт.)"
Нужно отбросить "(шт.)", чтобы получилось просто - "Яблоко".
Ранее подобную задачу выполнял путем перебора символа до определенного (например, до пробела), тем самым определял количество символов, предназначавшихся для отсечения, и функцией Left или Right делал отсечение.
Считаю данный алгоритм не оптимальным. А так как в настоящий момент встала задача выполнить подобное с большим множеством записей, то я уперся в поиск более лучшего решения данной задачи.
Так как полет мыслей ограничен, найти другое решение не в состоянии без помощи и подсказки.
Буду признателен всем, кто даст свой комментарий.
Век живи - век учись!
www.detal-plast.narod.ru

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.08.2005 (Ср) 19:09

Код: Выделить всё
Dim s As String
Dim pos As Integer
s = "Яблоко (шт.)"
pos = InStr(1, UCase(s), " (ШТ.)")
MsgBox Left$(s, pos - 1)

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

Сообщение GB826 » 18.08.2005 (Чт) 0:29

Код: Выделить всё
Dim s As String
s = "Яблоко (шт.)"
MsgBox Mid$(s, 1, InStr(1, UCase(s), " (ШТ.)")-1)

:roll:

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

Сообщение alibek » 18.08.2005 (Чт) 7:59

А если подстрока не будет найдена?
Код: Выделить всё
Dim s As String
s = "Яблоко (шт.)"
MsgBox Mid$(s & " (шт.)", 1, InStr(1, UCase(s), " (ШТ.)")-1)
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение GB826 » 18.08.2005 (Чт) 8:13

:oops: ой.
Хороший пример тому, что совершенствоваться можно бесконечно.

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 18.08.2005 (Чт) 8:57

Код: Выделить всё
Dim sample$, findstr$, newstr$, retval$
sample = lcase$("Яблоко (шт.)")
findstr = " (шт.)"
newstr = ""
retval = Replace (sample, findstr, repl, 1, 1)
Debug.Print retval
Бороться и искать, найти и перепрятать!

Fencer
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 01.06.2005 (Ср) 16:19
Откуда: Новосибирск

Сообщение Fencer » 18.08.2005 (Чт) 10:18

Гм...
А, может, можно оператором like?
Dim s as string
s = "Яблоко (шт.)"
If s Like "*******(**.)" then ...
Ведь так тоже можно? :oops:
Искал Гуглом и Яндексом.
Искал по форуму.
Спрашивал соседа.
Пытался сделать сам.
Спасибо за помощь ;)

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 18.08.2005 (Чт) 12:07

Like не совсем подходит, так как на месте "Яблоко" может быть любое слово.
А так все здОрово! Спасибо за участие!
Век живи - век учись!
www.detal-plast.narod.ru


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

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

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

    TopList  
cron