2

我想检查某些字母是否属于俄语字母。我可以通过与西里尔字母的直接比较来做到这一点:

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

有没有更简单的方法?例如,对于英文字母,我可以使用 rank() 函数:

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

但此功能不适用于 UTF-8 编码。如何获取字母在 UTF-8 表中的位置?

4

2 回答 2

2

我相信您可以使用该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
于 2016-02-13T14:43:11.543 回答
2

您应该能够使用该$HEX.格式识别原始字节码,然后根据该格式进行验证(请参阅这样的表格查看哪些值是西里尔字母)。

例如,使用 Dom 的示例:

data test;
input char $;
put char= $HEX4.;
datalines;
Б
Г
Д
Ж
a
b
c
;
run;
于 2016-02-13T16:52:39.543 回答