2016-02-13 3 views
2

Я хочу проверить, что письмо принадлежит русскому алфавиту. Я могу сделать это с прямым сравнением с кириллическими буквами:Убедитесь, что письмо принадлежит русскому алфавиту

letter in ('А', 'Б', 'В', 'Г', 'Д', 'Ж', ...) 

Есть ли более простой подход? Например. для английского алфавита, я мог бы использовать функцию ранга():

rank('A') <= rank(letter) <= rank('z') 

Но эта функция не работает в UTF-8 кодировке. Как я могу получить позицию письма в таблице UTF-8?

ответ

2

Я считаю, что вы можете использовать функцию BASECHAR. Это преобразует символ в его unicode-escape.

data test; 
input char $; 
datalines; 
Б 
Г 
Д 
Ж 
a 
b 
c 
; 
run; 

data test; 
set test; 
ok = (char=basechar(char,'ESC')); 
put char= ok=; 
run; 

Возвращает:

char=Б ok=0 
char=Г ok=0 
char=Д ok=0 
char=Ж ok=0 
char=a ok=1 
char=b ok=1 
char=c ok=1 
+0

Спасибо DomPazz! – PierreVanStulov

+0

Это не означает, что символ находится в русском алфавите, правда, просто - просто определите, что это не символ в базовой кодировке? (Что может хорошо работать для дела, просто подумайте, что стоит упомянуть, что он на самом деле делает.) – Joe

2

Вы должны быть в состоянии идентифицировать необработанный байткод с форматом $HEX., а затем верифицировать на его основе (см таблицу как this one, чтобы увидеть, что значения кириллицы).

Например, с помощью примера Dom можно:

data test; 
input char $; 
put char= $HEX4.; 
datalines; 
Б 
Г 
Д 
Ж 
a 
b 
c 
; 
run; 
+0

Спасибо за совет Джо! – PierreVanStulov

Смежные вопросы