我想检查某些字母是否属于俄语字母。我可以通过与西里尔字母的直接比较来做到这一点:
letter in ('А', 'Б', 'В', 'Г', 'Д', 'Ж', ...)
有没有更简单的方法?例如,对于英文字母,我可以使用 rank() 函数:
rank('A') <= rank(letter) <= rank('z')
但此功能不适用于 UTF-8 编码。如何获取字母在 UTF-8 表中的位置?
我想检查某些字母是否属于俄语字母。我可以通过与西里尔字母的直接比较来做到这一点:
letter in ('А', 'Б', 'В', 'Г', 'Д', 'Ж', ...)
有没有更简单的方法?例如,对于英文字母,我可以使用 rank() 函数:
rank('A') <= rank(letter) <= rank('z')
但此功能不适用于 UTF-8 编码。如何获取字母在 UTF-8 表中的位置?
我相信您可以使用该BASECHAR
功能。这会将字符转换为它的 Unicode 转义符。
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
您应该能够使用该$HEX.
格式识别原始字节码,然后根据该格式进行验证(请参阅这样的表格以查看哪些值是西里尔字母)。
例如,使用 Dom 的示例:
data test;
input char $;
put char= $HEX4.;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;