проверка на кириллицу
|
|
EagleSH | Дата: Среда, 08 Апреля 2009, 15:06 | Сообщение # 1 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| подскажите господа допустим: asdf$='проуйDFGEзытсCVBNS:\АОПЛКШЩЦЗВСЬМ' нужно определить наличие кириллицы и при наличии пойти туда, при отсутствии пойти туда
|
|
| |
toizy | Дата: Среда, 08 Апреля 2009, 15:19 | Сообщение # 2 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| по коду символа, функция CHR+ORD
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Среда, 08 Апреля 2009, 15:23 | Сообщение # 3 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| У каждой буквы есть соответствующий код смотри ASCII таблицу, символы кирилицы имеют определенный диапазон кодов, если в строке есть символы в этом диапазоне, то есть и кирилица. Смотри строковые функции.
|
|
| |
EagleSH | Дата: Среда, 08 Апреля 2009, 15:26 | Сообщение # 4 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| не ну это понятно мужики, это я всё знаю, мож кто-то делал просто, то лень писать было... но раз не делал никто, напишу сам спс что откликнулись
|
|
| |
toizy | Дата: Среда, 08 Апреля 2009, 15:35 | Сообщение # 5 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Блин, ну что тут писать. Вот, пишу от руки, без ММВ: s$ = 'Русскоязычная строка' L = LEN(s$) b = FALSE for i = 1 to L c$ = strget(s$, i) c = ord(c$) if (c >= 192) then b = TRUE Break() end next i if (b) then message("Русские символы есть", "") else message("Русских символов нет", "") end
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
EagleSH | Дата: Среда, 08 Апреля 2009, 15:48 | Сообщение # 6 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| toizy, а я так написал: Code string$='проуйDFGEзытсCVBNS:\АОПЛКШЩЦЗВСЬМ' For i=LEN(string$) To 1 checkstring$=StrGet(string$,i) checkstring=ORD(checkstring$) If (checkstring>191 & checkstring<256) Then Message("Обнаружена кириллица!","") Break() Else string$=StrDel(string$,i,1) End Next i правильно вроде?
|
|
| |
toizy | Дата: Среда, 08 Апреля 2009, 16:40 | Сообщение # 7 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (EagleSH) правильно вроде? Нет, неправильно Quote (EagleSH) & checkstring<256 не нужно. checkstring не может быть больше 255. Quote (EagleSH) Else string$=StrDel(string$,i,1) End не стоит выполнять удаление, тем более, что ты используешь цикл, от конца строки (кстати, почему именно с конца?) к началу. Т.е. ты и так выполняешь сравнение, зачем тебе ещё и удалять - лишняя нагрузка на цикл, который в ММВ и так не блещет, кроме того, совершенно бесполезное действие Лучше возьми мой код
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
EagleSH | Дата: Среда, 08 Апреля 2009, 16:52 | Сообщение # 8 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| toizy, тем немение работает, но спасибо мэн!
|
|
| |
toizy | Дата: Среда, 08 Апреля 2009, 16:57 | Сообщение # 9 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Как писать, дело твоё, но я бы советовал делать не так, чтобы работало, а так, чтобы работало быстро и без лишнего
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
EagleSH | Дата: Среда, 08 Апреля 2009, 17:07 | Сообщение # 10 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| toizy, оки
|
|
| |
Rush | Дата: Среда, 08 Апреля 2009, 17:46 | Сообщение # 11 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Несколько копеек... При длине строки большей 33 символов экономней использовать проверку по "шаблону". Code cyr$='о;е;и;а;н;е;с;р;в;л;к;м;д;п;у;ё;я;ы;г;б;з;ь;ч;й;х;ж;ю;ц;ш;щ;э;ф;ъ;' str$='проуйDFGEзытсCVBNS:\АОПЛКШЩЦЗВСЬМ' strtmp$=LOW(str$) For i=1 To GetArrayNum(cyr$,;) char$=GetArrayItem(cyr$,;,i) If (POS(char$,strtmp$)>0) Then Message("Кириллица есть","") strtmp$='' Break() End Next i Максимум проходов цикла при такой проверке - 33, при любой длине текста. Кстати, элементы шаблона расположены по частотности букв.
|
|
| |
EagleSH | Дата: Среда, 08 Апреля 2009, 18:11 | Сообщение # 12 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
| Rush, мерси
|
|
| |