Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/145: Рейтинг темы: голосов - 145, средняя оценка - 4.56
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
1

Оператор Like

11.03.2013, 11:11. Показов 27265. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Оператор 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2013, 11:11
Ответы с готовыми решениями:

При попытке добавить оператор else, появляется оператор "Ожидался оператор"
Здравствуйте, помогите пожалуйста. У меня есть программа, которая решает квадратные уравнения. Но...

Используя условный оператор if и оператор альтернативного выбора otherwise найдите значение функции
Помогите пожалуйста написать алгоритм с проверкой условия. Ни как не пойму, там и в зависит от х, и...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор...

21
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
11.03.2013, 11:28 2
Попробуйте:
Visual Basic
1
Like "[A-Z, А-Я, ~#, ., _]"
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
Цитата Сообщение от Uskorenie Посмотреть сообщение
но если этих символов больше, то оператор Like на все говорит False
Пример приведите.
Цитата Сообщение от Uskorenie Посмотреть сообщение
Однако я решил эту проблему понаставив между символами запятых, например "[a,b,c,d,e,f,g]"
Вы просто добавили запятую к списку символов, попробуйте в окне Immediate
Visual Basic
1
?"," like "[a,b,c,d,e,f,g]"
Цитата Сообщение от Uskorenie Посмотреть сообщение
Есть ли у кого-нибудь самая полная информация по этому оператору
В справке F1 написано достаточно ИМХО.
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
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.03.2013, 14:06 7
Цитата Сообщение от Uskorenie Посмотреть сообщение
если в качестве шаблонной строки указано, скажем 3-4 символа (точное количество "предела" не помню), например "[abcd]", но если этих символов больше, то оператор Like на все говорит False.
это ваш неведомый секретный источник вам такую ерунду поведал?
или вы просто вольно пересказываете "со слов", не проверяя?

Visual Basic
1
? "k" like "[abcdefghijklmnopqrstuvwxyz]"
True, как и должно быть

я вам даже больше скажу:
Visual Basic
1
for i=97 to 122: ? chr(i) like "[abcdefghijklmnopqrstuvwxyz]": next
тоже дает 26 True подряд.

проверяйте "источники", особенно если они безымянные.
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
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.03.2013, 14:23 9
да прочитайте вы справку, наконец
A hyphen (–) can appear either at the beginning (after an exclamation point if one is used) or at the end of charlist to match itself. In any other location, the hyphen is used to identify a range of characters.
1
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
11.03.2013, 14:37  [ТС] 10
Цитата Сообщение от ikki Посмотреть сообщение
это ваш неведомый секретный источник вам такую ерунду поведал?
или вы просто вольно пересказываете "со слов", не проверяя?
Зачем же мне засорять форум, я сначала проверяю
Я наткнулся на это сам, а источник попался мне на глаза уже после На самом деле строка была не такой простой как ABCDEF... за это я прошу прощения ибо ввёл Вас в заблуждение - к сожалению я не сразу вспомнил, проблемный набор символов и понадеялся на идентичность ситуации, но промахнулся. Не заработавшая строка была такой:
[+-*/;.)<>=]
Строка которая начала работать имела такой вид:
[+,-,*,/,;,:,(,),<,.,>,=]

P.S.: Порядок следования символов не повторяет мой начальный вариант. Его я к сожаления забыл окончательно...

Добавлено через 1 минуту
Цитата Сообщение от ikki Посмотреть сообщение
да прочитайте вы справку, наконец
Блин! Спасибо!
До этого я применял же этот символ, а здесь... Очень извеняюсь
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.03.2013, 14:47 11
на самом деле решением вашей "проблемы" было бы
[-+*/;:(.)<>=]
а при добавлении запятых вы вообще потеряли проверку на "-"

в общем, правило простое: нужно искать "-" - ставим его сразу за открывающей скобкой и всё.
1
58 / 20 / 0
Регистрация: 03.08.2012
Сообщений: 102
11.03.2013, 17:06  [ТС] 12
Цитата Сообщение от ikki Посмотреть сообщение
а при добавлении запятых вы вообще потеряли проверку на "-"
Ага, на это я так же наткнулся В общем, ещё раз спасибо за подробности, упущенные мною...
Однажды я вырасту и перестану задавать детские вопросы, а пока, я только учусь
0
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11
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
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
30.04.2014, 19:48 15
Цитата Сообщение от F1
Note. To match the special characters left bracket ([), question mark (?), number sign (#), and asterisk (*), enclose them in brackets. The right bracket (]) can't be used within a group to match itself, but it can be used outside a group as an individual character.
так что достаточно
Visual Basic
1
"*[[]*]*"
3
Заблокирован
01.05.2014, 19:51 16
Цитата Сообщение от ikki Посмотреть сообщение
да прочитайте вы справку, наконец

Не по теме:

Наш народ сразу в справку не пойдет, менталитет другой! Пойдет сначала на форум, потом его пошлют в справку! :)

0
617 / 17 / 8
Регистрация: 05.05.2012
Сообщений: 221
Записей в блоге: 11
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
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
25.02.2015, 13:35 19
справка "в курсе".
или Вы ей не доверяете?
0
1 / 1 / 0
Регистрация: 11.06.2013
Сообщений: 27
25.02.2015, 17:50 20
ikki,
В справке ничего такого не нашёл.
0
25.02.2015, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2015, 17:50
Помогаю со студенческими работами здесь

Зачем нужен оператор while (именно while, а не do-while), когда есть оператор for?
Четкий и понятный ответ в литературе и на других web ресурсах не найден, поэтому вопрос к знатокам:...

Условный оператор и оператор выбора. Даны два угла треугольника. Определить, существует ли такой треугольник
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор...

Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости
для чего нужен оператор двоеточие ( : ), если два двоеточия( :: ) - это оператор расширения области...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru