Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
проверка на кириллицу
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
не
ну это понятно мужики, это я всё знаю, мож кто-то делал просто, то лень писать было... но раз не делал никто, напишу сам biggrin
спс что откликнулись biggrin
 
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

правильно вроде? biggrin

 
toizyДата: Среда, 08 Апреля 2009, 16:40 | Сообщение # 7
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (EagleSH)
правильно вроде?

Нет, неправильно happy

Quote (EagleSH)
& checkstring<256

не нужно. checkstring не может быть больше 255.

Quote (EagleSH)
 Else      string$=StrDel(string$,i,1)    End

не стоит выполнять удаление, тем более, что ты используешь цикл, от конца строки (кстати, почему именно с конца?) к началу. Т.е. ты и так выполняешь сравнение, зачем тебе ещё и удалять - лишняя нагрузка на цикл, который в ММВ и так не блещет, кроме того, совершенно бесполезное действие

Лучше возьми мой код smile


Жизнь оказалась не такой уж и забавной, как поначалу...
 
EagleSHДата: Среда, 08 Апреля 2009, 16:52 | Сообщение # 8
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
toizy,
smile
тем немение работает, но спасибо мэн!
 
toizyДата: Среда, 08 Апреля 2009, 16:57 | Сообщение # 9
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Как писать, дело твоё, но я бы советовал делать не так, чтобы работало, а так, чтобы работало быстро и без лишнего smile

Жизнь оказалась не такой уж и забавной, как поначалу...
 
EagleSHДата: Среда, 08 Апреля 2009, 17:07 | Сообщение # 10
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
toizy, оки biggrin
 
RushДата: Среда, 08 Апреля 2009, 17:46 | Сообщение # 11
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
Несколько копеек... smile
При длине строки большей 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, мерси biggrin
 
  • Страница 1 из 1
  • 1
Поиск: