检查某些字母是否属于俄语字母表
Check that some letter belongs to Russian alphabet
我想检查一些字母是否属于俄语字母表。我可以通过与西里尔字母直接比较来做到这一点:
letter in ('А', 'Б', 'В', 'Г', 'Д', 'Ж', ...)
有没有更简单的方法?例如。对于英文字母,我可以使用 rank() 函数:
rank('A') <= rank(letter) <= rank('z')
但此功能不适用于 UTF-8 编码。我怎样才能得到字母在 UTF-8 table 中的位置?
我相信您可以使用 BASECHAR
功能。这会将字符转换为其 unicode 转义字符。
data test;
input char $;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;
data test;
set test;
ok = (char=basechar(char,'ESC'));
put char= ok=;
run;
Returns:
char=Б ok=0
char=Г ok=0
char=Д ok=0
char=Ж ok=0
char=a ok=1
char=b ok=1
char=c ok=1
您应该能够识别具有 $HEX.
格式的原始字节码,然后基于该格式进行验证(参见 table 之类的 this one 以查看哪些值是西里尔字母) .
例如,使用Dom的例子:
data test;
input char $;
put char= $HEX4.;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;
我想检查一些字母是否属于俄语字母表。我可以通过与西里尔字母直接比较来做到这一点:
letter in ('А', 'Б', 'В', 'Г', 'Д', 'Ж', ...)
有没有更简单的方法?例如。对于英文字母,我可以使用 rank() 函数:
rank('A') <= rank(letter) <= rank('z')
但此功能不适用于 UTF-8 编码。我怎样才能得到字母在 UTF-8 table 中的位置?
我相信您可以使用 BASECHAR
功能。这会将字符转换为其 unicode 转义字符。
data test;
input char $;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;
data test;
set test;
ok = (char=basechar(char,'ESC'));
put char= ok=;
run;
Returns:
char=Б ok=0
char=Г ok=0
char=Д ok=0
char=Ж ok=0
char=a ok=1
char=b ok=1
char=c ok=1
您应该能够识别具有 $HEX.
格式的原始字节码,然后基于该格式进行验证(参见 table 之类的 this one 以查看哪些值是西里尔字母) .
例如,使用Dom的例子:
data test;
input char $;
put char= $HEX4.;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;