11.05.2014, 16:01 | #1 |
Программатор
|
Ax12. Проверка строки на русские буквы.
Коллеги, всех с праздниками! Подскажите, есть какая то стандартная функция для проверки строки на содержание букав только русского языка (можно любого)?
Заранее спасибо! |
|
11.05.2014, 19:11 | #2 |
Участник
|
и вас тоже с праздниками.
Я в таких случаях использую strkeep передавая ей в качестве параметра все символы русского алфавита. Если вернулась непустая строка то значит есть. |
|
11.05.2014, 19:27 | #3 |
Участник
|
Про стандартную не слышал.
А я использую обычно char2num и проверяю на диапазон от А до я |
|
11.05.2014, 19:56 | #4 |
Участник
|
В 12 есть замечательная функция match(str pattern, str text)
Указываете диапазон русских букв , указываете строку, в которой надо произвести проверку и вам вернёт , есть ли русские буквы аль нет http://msdn.microsoft.com/en-us/library/aa886279.aspx |
|
12.05.2014, 11:30 | #5 |
Программатор
|
Цитата:
Сообщение от user_ax
Указываете диапазон русских букв
http://msdn.microsoft.com/en-us/library/aa886279.aspx |
|
12.05.2014, 11:50 | #6 |
Участник
|
Если что пиши.
X++: str allowStr = "^[а-яэъыёА-ЯЭЪЫЁ]+$"; ; if (!match(allowStr, _value)) ret = checkFailed(strfmt("Поле '%1' содержит запрещающие знаки.", _errorMsg)); |
|
|
За это сообщение автора поблагодарили: Ruff (2), Мартынов Дмитрий (1), Sada (1), raniel (1). |
12.05.2014, 11:54 | #7 |
Участник
|
|
|
12.05.2014, 16:22 | #8 |
Программатор
|
Может меня не правильно поняли, но мне нужна проверка строки, на то, что она состоит только из русских букв. То есть, если там есть хоть одна английская, то ругаться
|
|
12.05.2014, 16:24 | #9 |
Программатор
|
Цитата:
X++: str allowStr = "^[а-яэъыёА-ЯЭЪЫЁ]+$"; ; if (!match(allowStr, "мама")) checkFailed(strfmt("Поле '%1' содержит запрещающие знаки.", "жажажа")); X++: str allowStr = "^[а-яэъыёА-ЯЭЪЫЁ]+$"; ; if (!match(allowStr, "mother")) checkFailed(strfmt("Поле '%1' содержит запрещающие знаки.", "жажажа")); ЗЫ: вы как к этому "^[а-яэъыёА-ЯЭЪЫЁ]+$" пришли |
|
12.05.2014, 16:25 | #10 |
NavAx
|
X++: if (strlen(strkeep(_str, 'АБ....я')) != strlen(_str)) |
|
|
За это сообщение автора поблагодарили: Sada (3). |
12.05.2014, 16:25 | #11 |
Программатор
|
|
|
12.05.2014, 16:26 | #12 |
Участник
|
Цитата:
функция match выдадет вам 1 , если в проверяемой строке есть хотя бы один элемент из шаблона. То есть, вам нужно: X++: str _val; int res; _val = 'Тут какой-то русский текст with some english words'; res = match("[а-я]",_val); if (res == 0) ret = checkFailed("Only english Letters"); |
|
|
За это сообщение автора поблагодарили: Sada (3). |
12.05.2014, 16:28 | #13 |
Участник
|
В кач-ве шаблона можно передать регулярное выражения. Если я правильно понял, кроме диапазона ещё что-то нужно указать, но вот что - не могу подсказать, сам не сталкивался
|
|
12.05.2014, 16:33 | #14 |
Программатор
|
Строка "АБВ" должна пройти проверку, а вот "АБВZ" пройти не должно, так как Z - это не русская буква
|
|
12.05.2014, 16:35 | #15 |
Участник
|
Цитата:
Только и условие тогда будет, поиск английских букв в строке. Если нашли хоть одну - match вернёт 1. Конечно, если нужно проверить наличие всех без исключения символов, кроме русского алфавита (не только английские буквы) - лучше использовать другой путь. PHP код:
Последний раз редактировалось Krash; 12.05.2014 в 16:48. |
|
12.05.2014, 16:37 | #16 |
Программатор
|
|
|
12.05.2014, 17:31 | #17 |
Участник
|
я предоставил рабочий код. в нашей системе он реализован для проверки кода клиента на соответсвие только русским символам. Все просто регулярные выражение. http://subcoder.ru/%D1%80%D0%B5%D0%B...%D0%B0-%D1%8F/
Правда у меня исходня строка разрешает еще цифры. X++: allowStr = "^[а-яэъыёА-ЯЭЪЫЁ0-9]+$"; В Вашем случае прекрастно работает с X++: allowStr = '^[а-яА-ЯёЁ]+$'; Последний раз редактировалось axotnik88; 12.05.2014 в 17:46. Причина: дополнение |
|
12.05.2014, 17:42 | #18 |
Программатор
|
Цитата:
Сообщение от axotnik88
я предоставил рабочий код. в нашей системе он реализован для проверки кода клиента на соответсвие только русским символам. Все просто регулярные выражение. http://subcoder.ru/%D1%80%D0%B5%D0%B...%D0%B0-%D1%8F/
Правда у меня исходня строка разрешает еще цифры. X++: allowStr = "^[а-яэъыёА-ЯЭЪЫЁ0-9]+$"; |
|
12.05.2014, 18:09 | #19 |
Ищущий знания...
|
В макрос все эти буквы, в макрос
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|