Сравнить строки

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

Сравнить строки

Сообщение igor_m » 17.02.2007 (Сб) 16:42

В продолжение темы чуть ниже: Как прочитать файл с определенного места ?

Итак есть набор строк. Теперь нужно выбрать из них строки по образцу. Образец - это набор от 3 до 15 символов. Всего образцов 10-20. В начале каждой строки стоит ключ, который нужно сравнивать с образцом.
Как это лучше всего сделать?

Считываем ключ вначале строки. strКлюч=Ключ
Затем цикл по всем образцам
strОбразец=Образец
if strОбразец=strКлюч ' найдена, выходим из цикла по образцам.

Вопрос: такое сравнение строк - это самый быстрый вариант, или есть лучше?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2007 (Сб) 16:47

Добавить все возможные ключи в коллекцию.

Считав ключ, попытаться обратиться к коллекции с ним. При отсутствии ошибки сделать вывод о наличии ключа.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Сообщение igor_m » 17.02.2007 (Сб) 16:55

Не понял.
Ключи у меня будут в ListBox - это же коллекция. А как это сделать:

попытаться обратиться к коллекции с ним. При отсутствии ошибки сделать вывод о наличии ключа

И еще - прочитал несколькими постами ниже:
заменить If с несколькими Or на несколько последовательных If и да

Сам по себе сложный оператор If работает медленнее настолько, насколько он длиннее?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2007 (Сб) 16:58

ListBox - это не коллекция.
Коллекция - это Collection.
Сам по себе сложный If работает медленнее, если в нём содержатся вызовы функций. В противном случае оптимизация производится.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Сообщение igor_m » 17.02.2007 (Сб) 19:08

Упарился просто до ни магу!

Так и не нашел метода обращения к коллекции, чтоб узнать есть ли в ней такой ключ. А без этого коллекция теряет смысл.

Проверка в цикле for each ... in ... next ничем не отличается от проверки значений массива в который можно положить образцы.
Объясните мне смысл коллекции для данного случая.

Когда я спрашивал про сравнение строк (strКлюч - strОбразец) я имел в виду следующее: strОбразец="РСУ", strКлюч="трансстройвагон".
Уже первый символ не совпадает, дальше можно не сравнивать. Но отличия могут начаться и с 12 символа.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2007 (Сб) 19:21

igor_m писал(а):Так и не нашел метода обращения к коллекции, чтоб узнать есть ли в ней такой ключ.

Col.Item "ключ"

igor_m писал(а):Уже первый символ не совпадает, дальше можно не сравнивать. Но отличия могут начаться и с 12 символа.

Думаешь, if s1=s2 упорно сравнивает до конца несмотря ни на что? :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Сообщение igor_m » 17.02.2007 (Сб) 20:25

Спасибо!

Думаешь, if s1=s2 упорно сравнивает до конца несмотря ни на что?


Уже не думаю. Пока парился, обнаружилась старая книжка по VB4, в ней нашел, что сравнение производится по длине строки, а потом уже по символам. На самом деле такая информация не часто встречается.
А если берешься за VB редко, так вопросов море, а в интернете в основном, ссылки на одни темы которые все передирают друг у друга.
Col.Item "ключ" - я рамблером час шарил про коллекции, а найти не смог. Находятся в основном только Add & Remove.


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

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

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

    TopList