【问题标题】:Check that some letter belongs to Russian alphabet检查某些字母是否属于俄语字母
【发布时间】:2016-02-13 12:30:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: utf-8 sas string-function


    【解决方案1】:

    我相信你可以使用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
    

    【讨论】:

    • 这不会识别出该字符是俄语字母,对吧 - 只是识别出它不是基本编码中的字符? (这可能很适合手头的案例,只是认为值得一提的是它实际上在做什么。)
    【解决方案2】:

    您应该能够识别具有$HEX. 格式的原始字节码,然后基于此进行验证(请参阅this one 之类的表格以查看哪些值是西里尔字母)。

    以Dom为例:

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

    【讨论】:

    • 感谢乔的建议!
    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2013-12-08
    相关资源
    最近更新 更多