Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Определение русских символов в строке
toizyДата: Четверг, 09 Апреля 2009, 09:39 | Сообщение # 1
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Как рациональнее определить, содержит ли строка русские или только английские символы. Вот мой вариант
Code
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

Однако, как справедливо заметил Rush, при длине строки более 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, при любой длине текста. Кстати, элементы шаблона расположены по частотности букв.

Все эти способы легко использовать также для проверки строки на наличие любых других символов (непечатных и др.), нужно только изменить условие...


Жизнь оказалась не такой уж и забавной, как поначалу...
 
  • Страница 1 из 1
  • 1
Поиск: