v7: Найти первый не русский символ #747514


#0 by beaver1971
Как найти в строке позицию первого не русского символа (цифры, знака препинания и т.д.)?
#1 by PR третий
Эээ... а в чем проблема?
#2 by itlikbez
С помощью цикла.
#3 by Garykom
сначала уточнить понятие "не русский символ" = составить перечень всех символов которые ищем
#4 by anatoly
задача для школьной информатики.
#5 by Волшебник
лучше наоборот - перечислить русские
#6 by Garykom
проще для программиста, не значит проще для компьютера
#7 by Casey1984
ВРЕГ(Символ) >= "А" И ВРЕГ(Символ) <= "Я"
#8 by Fish
НЕ русских символов гораздо больше, чем русских, поэтому для компьютера тоже проще.
#9 by spectre1978
Если Найти ("АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзиклмнопрстуфхцчшщъыьэюя", Сред (ВходСтр, Сч, 1))=0 Тогда Сообщить ("Нашли первый нерусский символ");
#10 by Casey1984
ой в хотел ответить)
#11 by Mikeware
цифра "3" - это русский символ? или уже арабский?
#12 by Garykom
да но как бы по кодам проще проверить на вхождения в интервалы, чем на невхождения
#13 by Casey1984
зависит от валюты)
#14 by Учитель
Это ты вручную набирал от "А" до "Я" буквы?
#15 by Xapac
а буква i? это так то тоже русский. только не современный.
#16 by Fish
Буквы "Ёё" и "Йй" потерял.
#17 by Mikeware
0,5 - точно русский....
#18 by Garykom
думать что русский программист знает наизусть алфавит это несколько самонадеянно... хотя если 1С-ник...
#19 by Mirnin
Обработку написал же, зачем вручную.
#20 by spectre1978
ну это как бы каждый может добавить по желанию чего хочет. Может, там и цифры надо. Описанный механизм именно тем и удобен, что чего хочешь то и добавил в константу, и не надо париться с кодами
#21 by Timon1405
регэксп  [^а-я]/i не предлагать?
#22 by Xapac
мне вот интересно а если всякие там казахские или украинские кодировки. оно как? теже символы или другие, тока выглядят похоже?
#23 by Волшебник
пропустил Й и Ё
#24 by Волшебник
другие коды
#25 by Xapac
тада надо перевести всё в кодировку юникод и смотреть символы "Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F"
#26 by Ёпрст
для клюшек, так, например Если OEMToAnsi(Буква) = Буква Тогда   Сообщить("Не русский символ"); КонецЕсли;
#27 by beaver1971
есть строка, нужно найти позицию первого не русского символа.... Русские символы - только буквы русского алфавита
#28 by spectre1978
Не совсем так. У основных символов коды будут совпадать. Кириллица в юникоде начинается с 0x400 и заканчивается 0x527, и что туда входит - достаточно легко посмотреть, использовав стандартное виндовое приложение charmap.exe с каким-нибудь распространенным шрифтом типа Arial.
#29 by spectre1978
+ уточнение: по 0x52F. Еще есть несколько небольших диапазонов ближе к концу таблицы, но основной набор от 400 до 52F.
#30 by beaver1971
ха.... Вот только N * 1000 вызовов VBScript.RegExp, причем N даже не двузначное число (((((
#32 by Casey1984
вот эт да, 1с - сила)
#33 by Ёпрст
и ?
#34 by aka AMIGO
#35 by Timon1405
прежде чем "хакать" ознакомьтесь с документацией особенно по использованию звездочки. ваш регэксп работает мягко говоря неоптимально. вот код для снеговика:
#36 by beaver1971
СтрокаПоиска = "Аккумулятор СТ50"; Нужно увидеть число 12, как? )))
#37 by beaver1971
+ СтрокаПоиска = "Гвоздь 150 мм"; а тут результат - 7
#38 by Timon1405
Индексы символов с 0 кагбе нумеруются, у вас неправильные ожидания от платформы. код из у меня выдает 11 и 6, ЧЯДНТ?
#39 by beaver1971
#40 by SiAl-chel
#41 by SiAl-chel
+ Опечатался, вот тут правильней
#42 by SiAl-chel
#43 by Serg_1960
Кто-то невнимательно читает - автору нужно найти позицию первого "нерусского" символа
#44 by Timon1405
даже не смешно уже. ничего не выводит, а что должен выводить по вашему? если уж так нужно, отловите исключение в "Если ПоискСлов.count Тогда"
#45 by SiAl-chel
Тогда все еще проще Позиция = 0;
#46 by SiAl-chel
+ В условии вместо И поставить ИЛИ.
#47 by Злопчинский
бяка куча лишнего в коде .
#48 by SiAl-chel
"Нет предела совершенству"
#49 by aka AMIGO
хмык.. а "слабо" посмотреть в ??? :) кстати, почему 1040 и/или 1103 ? вот эта простая штука возвращает все нужные коды и символы Процедура Сформировать
#50 by zak555
в 8 используется utf-8 другая кодровка
#51 by zak555
*кодировка
#52 by aka AMIGO
ммм.. понятно, запомню :)
#53 by spectre1978
По-моему, там используется обычный типовой для Windows UTF-16 Little Endian. UTF-8 чаще используется там где требуется экономия объема данных, а в приложениях обычно используют то что проще, т.е. UTF-16.
#54 by Salimbek
А пробел - это какой символ?
#55 by spectre1978
Обычный, самый простой - U+0020. ASCII символы в юникоде совпадают по номерам со старой ASCII таблицей.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С