![]() |
![]() |
|
Кириллица в строке | ☑ | ||
---|---|---|---|---|
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) чтобы не тратить время на преобразование Нрег, или Врег
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |