Имя: Пароль:
1C
 
Кириллица в строке
0 Damash
 
24.05.11
03:35
Как можно проверить, что в строке нету кириллических символов?
1 Злопчинский
 
24.05.11
03:37
Кириллические символы имеют коды во второй половние кодовой таблицы - после 127 до 255, но не все эти коды - буквы, что-то еще и знаки всякие. Так что открой командную строку в виндах, набнри charmap и втыкай
2 Злопчинский
 
24.05.11
03:38
также можно использовать Regexp
3 Rusty Nail
 
24.05.11
03:48
4 Злопчинский
 
24.05.11
03:57
(3) !оно
там же: http://help1c.com/faq82/view/475.html
5 МастерВопросов
 
24.05.11
05:47
а чо старое доброе:

Если Найти("АБВГ...абвг...",НашСИмвол)>0 Тогда
Предупреждение("Есть русские буквы!");
Прервать;
КонецЕсли;
6 andrewks
 
24.05.11
08:17
(5) это чо?
7 Jstunner
 
24.05.11
08:18
(6) это проверка символа на алфавит
8 1Сергей
 
24.05.11
08:19
(7) а цыкл где?
9 Jstunner
 
24.05.11
08:21
(8) это проверка символа, а не строки. Вытащить в цикле Н-ный символ из строки, надеюсь, не представляет сложностей..
10 andrewks
 
24.05.11
08:21
(9) а использование Найти() значит представляет особую сложность?
11 Rie
 
24.05.11
08:21
(8) Ты ещё спроси - почему в алфавите среди русских букв точки затесались :-)
12 Rie
 
24.05.11
08:22
(10) Судя по тому, что ответ с Найти был под номером 5...
13 andrewks
 
24.05.11
08:30
Функция ЭтоСимволКир(С)
С1=Врег(С);
Если (С1="Ё") ИЛИ ((С1>="А") И (С1<="Я")) Тогда Возврат 1; КонецЕсли;
Возврат 0;
КонецФункции

Рез=0;
Для нс=1 По СтрДлина(НашаСтрока) Цикл Рез=Рез+ЭтоСимволКир(Сред(НашаСтрока,нс,1));
Если Рез>0 Тогда
Предупреждение("Есть символы кириллицы!!!");
Иначе
Предупреждение("Нет символов кириллицы!!!");
КонецЕсли;
14 andrewks
 
24.05.11
08:34
даже так:
Для нс=1 По СтрДлина(НашаСтрока) Цикл
Если ЭтоСимволКир(Сред(НашаСтрока,нс,1))=1 Тогда Рез=Рез+1; Прервать; КонецЕсли;
КонецЦикла;
15 Rie
 
24.05.11
08:56
(14) Был уже как-то спор на форуме - что быстрее: RegExp, Найти или циклом бежать. Поищи, интересно на самом деле было. С решением от Схамбара. Там, правда, искали цифры, а не буквы - но принцип-то тот же.
16 andrewks
 
24.05.11
09:03
(15) ты хотел сказать: смахарбА?

с цифрами быстрее всего вложенные СтрЗаменить(), если это про ту ветку, в которой я участвовал
17 Ёпрст
 
гуру
24.05.11
09:05
(0)

Ежели  OemToAnsi(Стр)<>Стр Тогда
   Сообщить("В строке есть кириллица");
КонецЕжели;
18 Rie
 
24.05.11
09:06
(16) Ага, очепятался. Правда, сейчас уже сомнения гложут - может, не он, а NS.
Не знаю насчёт СтрЗаменить, там было именно про поиск. Найти()  всех уделало в итоге (при правильном использовании).
19 andrewks
 
24.05.11
09:07
(17) это нечестные методы! :-)
20 1Сергей
 
24.05.11
09:10
(17) Читер
21 Rie
 
24.05.11
09:12
(17) "ADB ®" - кириллицы нет.
22 Rie
 
24.05.11
09:12
+(21) А указанный тест говорит, что есть.
23 МастерВопросов
 
24.05.11
15:57
(6)
Функция ПрверитьНаРусскиеБуквы(Путькфайлу)
       //Проверка на русские буквы АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭабвгдеёзийклмнопрстуфхъыэ
       РусскийШрифт="АБВГДЕЁЗИЙКЛМНОПРСТУФХЬЪЫЭабвгдеёзийклмнопрстуфхьъыэ";
   ДлинаПути=СтрДлина(Путькфайлу);
   Для НомерВСтроке=1 По ДлинаПути Цикл  
       СимволИзСтроки=Сред(Путькфайлу,НомерВСтроке,1);    
       Если Найти(РусскийШрифт,СимволИзСтроки)>0 Тогда
           Сообщить("Найдены русские буквы в "+Путькфайлу);      
           Возврат 1;
       КонецЕсли;
   КонецЦикла;
   Возврат 0;
КонецФункции
24 zak555
 
24.05.11
15:59
зачем использовать большие и малые буквы ?
25 МастерВопросов
 
24.05.11
15:59
и до кучи, смена кодировки:

//*******************************************
Функция ПреобразоватьСтрокуИзУТФ8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимв(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       ИначеЕсли (Код>=128)И(Код<192) Тогда
       Иначе
           Н=Н+1;
           Знак2=Сред(Стр,Н,1);
           Код2=КодСимв(Знак2);
           Если Код=208 Тогда
               Если Код2=129 Тогда Итог=Итог+"Ё";
               Иначе Итог=Итог+Симв(КодСимв("А")+Код2-144);
               КонецЕсли;
           ИначеЕсли Код=209 Тогда
               Если Код2=145 Тогда Итог=Итог+"ё";
               Иначе Итог=Итог+Симв(КодСимв("р")+Код2-128);
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции  

я эти функции брал из архиовов этого форума
26 МастерВопросов
 
24.05.11
16:00
(24) чтобы не тратить время на преобразование Нрег, или Врег