58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
1 | |
Оператор Like11.03.2013, 11:11. Показов 27265. Ответов 21
Метки нет (Все метки)
Оператор Like, такой простой, но такой таинственный
Вообще, по нему всё ясно, кроме некоторых особенностей. Так, например, оператор Like очень здорово работает, если в качестве шаблонной строки указано, скажем 3-4 символа (точное количество "предела" не помню), например "[abcd]", но если этих символов больше, то оператор Like на все говорит False. Однако я решил эту проблему понаставив между символами запятых, например "[a,b,c,d,e,f,g]", в этом случае оператор стал работать как надо. Почему? Есть ли у кого-нибудь самая полная информация по этому оператору, так как в разных источниках по этому оператору разная информация, но не всё из узнанного мною работает или работает, но не в том виде, в котором описано. А вообще у меня один вопрос, возможно ли в следующей конструкции не применять оператор "ИЛИ": Loop While Charact Like "[A-Z]" Or Charact Like "[А-Я]" Or Charact Like "#" Or Charact Like "[._]" Ну, к примеру, что бы получилось что-то в этом роде: Loop While Charact Like "[A-Z, А-Я, "#", ., _]"
0
|
11.03.2013, 11:11 | |
Ответы с готовыми решениями:
21
При попытке добавить оператор else, появляется оператор "Ожидался оператор" Используя условный оператор if и оператор альтернативного выбора otherwise найдите значение функции Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 |
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
||||||
11.03.2013, 11:28 | 2 | |||||
Попробуйте:
1
|
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
11.03.2013, 11:44 [ТС] | 3 |
Вообще работает Спасибо!!! Ведь предложенный мною вариант я не проверял, т.к. считал его не дееспособным
Странно, что я до этого не доэксперементировал А можно сделать так, что бы оператор реагировал и на любую цифру? Символ # здесь как команда (не знаю как правильно сказать)
0
|
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
11.03.2013, 11:45 | 4 |
[0-9]
1
|
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
11.03.2013, 11:51 | 5 | |||||
Пример приведите.
Вы просто добавили запятую к списку символов, попробуйте в окне Immediate
1
|
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
11.03.2013, 12:46 [ТС] | 6 |
Пример я, к сожалению, удалил, так как не добился работоспособности того кода и изменил логику его действия на эту: Charact Like "[A-Z]" Or Charact Like "[А-Я]" Or Charact Like "#" Or Charact Like "[._]"
В принципе, она мне даже больше нравится, чем предыдущая. А там было как-то так: Like "[<=>();]" только символов чуть больше. Этот набор не работал без разделителя в виде запятой. А по поводу ?"," like "[a,b,c,d,e,f,g]" я был приятно удивлён В одном из источников говорилось о запятой, как о спецсимволе Добавлено через 6 минут Всё заработало вот так Like "[A-ZА-Я._0-9]" Всем огромное спаибо!
0
|
призрак
|
|||||||||||
11.03.2013, 14:06 | 7 | ||||||||||
это ваш неведомый секретный источник вам такую ерунду поведал?
или вы просто вольно пересказываете "со слов", не проверяя?
я вам даже больше скажу:
проверяйте "источники", особенно если они безымянные.
1
|
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
11.03.2013, 14:17 [ТС] | 8 |
А можно ещё спросить?
У меня есть некий пример в виде строки: 89+56*8<>7-4<=5 Следующий код возвращает значение 7 For i = 1 To Len(TxtLine) xc = Mid(TxtLine, i, 1) If xc Like "[+-/*<>=]" Then ElementCount = ElementCount + 1 End If Next i Т.е. всё верно. Но как только в строке происходит изменение следующего характера (добавляется , или .) код возвращает не верное значение, к примеру теперь строка будет такой 8,9+5.6*8<>7-4<=5. в этом случае код, описанный выше вернёт значение 9 Почему? Я начал эксперементировать и начал убирать символы из квадратных скобок по одному каждый раз перезапуская код. В итоге я понял, что проблема в символах +-/. Теперь я изменил очерёдность символов вместо "[+-/*<>=]" поставил так "[-/+*<>=]", теперь код стал работать верно и выводить верное значение 7. Ещё один интересный момент, если я поставлю не -/+, а +/-, т.е. "[+/-*<>=]", то операрор Like возвращает ошибку 93 (Неправильный шаблон строки). Кто-нибудь понимает что просходит?
0
|
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
11.03.2013, 14:37 [ТС] | 10 |
Зачем же мне засорять форум, я сначала проверяю
Я наткнулся на это сам, а источник попался мне на глаза уже после На самом деле строка была не такой простой как ABCDEF... за это я прошу прощения ибо ввёл Вас в заблуждение - к сожалению я не сразу вспомнил, проблемный набор символов и понадеялся на идентичность ситуации, но промахнулся. Не заработавшая строка была такой: [+-*/;.)<>=] Строка которая начала работать имела такой вид: [+,-,*,/,;,:,(,),<,.,>,=] P.S.: Порядок следования символов не повторяет мой начальный вариант. Его я к сожаления забыл окончательно... Добавлено через 1 минуту Блин! Спасибо! До этого я применял же этот символ, а здесь... Очень извеняюсь
0
|
призрак
|
|
11.03.2013, 14:47 | 11 |
на самом деле решением вашей "проблемы" было бы
[-+*/;:(.)<>=] а при добавлении запятых вы вообще потеряли проверку на "-" в общем, правило простое: нужно искать "-" - ставим его сразу за открывающей скобкой и всё.
1
|
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
|
|
11.03.2013, 17:06 [ТС] | 12 |
Ага, на это я так же наткнулся В общем, ещё раз спасибо за подробности, упущенные мною...
Однажды я вырасту и перестану задавать детские вопросы, а пока, я только учусь
0
|
30.04.2014, 11:24 | 13 |
Всем привет!
Подскажите есть ли у оператора Like какой-нибудь знак-исключение? Т.е. мне нужно проверить строку лайком совпадает подходит ли она под маску "*[*]*" скобки мне нужно употребить как символы, а не как задаваемое условие.
0
|
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
30.04.2014, 11:38 | 14 |
Bati4eli, Заключите скобку в скобки
Код
?"q[wer]ty" like "*[[]*[]]*" True ?"qwer]ty" like "*[[]*[]]*" False ?"q[werty" like "*[[]*[]]*" False
1
|
05.05.2014, 12:01 | 17 |
inv.DS,
я практически всегда юзаю справки, однако в них не всегда указывается как можно использовать те или иные методы, т.е. сухая инфа. А добрые жители форума практически всегда готовы помочь менее опытным юзерам.. ибо в том и вся суть форума, иначе зачем они еще?! Справка мсдн: ссыль
0
|
1 / 1 / 0
Регистрация: 11.06.2013
Сообщений: 27
|
|
25.02.2015, 13:32 | 18 |
Добрый день.
Кто-нибудь в курсе, есть ли в Like'е свой "или" (or) для нескольких символов? Т.е. как записать одной строкой выражение такого вида: If strFR Like "*["!", "@", "R[", "C[", "BAD"]*" then
0
|
1 / 1 / 0
Регистрация: 11.06.2013
Сообщений: 27
|
|
25.02.2015, 17:50 | 20 |
ikki,
В справке ничего такого не нашёл.
0
|
25.02.2015, 17:50 | |
25.02.2015, 17:50 | |
Помогаю со студенческими работами здесь
20
Зачем нужен оператор while (именно while, а не do-while), когда есть оператор for? Условный оператор и оператор выбора. Даны два угла треугольника. Определить, существует ли такой треугольник Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |