【问题标题】:Finding Unicode script of a Char in Haskell在 Haskell 中查找字符的 Unicode 脚本
【发布时间】:2018-03-06 18:37:18
【问题描述】:

纯粹出于教学原因,我想编写一个函数来检查 Char 是否代表西里尔字母。俄语的简单近似是

isCyrillic c = 
    let lc = toLower c 
    in 'а' <= lc && lc <= 'я'

但我不喜欢它,因为它不能处理其他使用西里尔文的语言。我可以对范围进行硬编码:

U+0400–U+04FF Cyrillic
U+0500–U+052F Cyrillic Supplement
U+2DE0–U+2DFF Cyrillic Extended-A
U+A640–U+A69F Cyrillic Extended-B
U+1C80–U+1C8F Cyrillic Extended-C

但这似乎也不是好的做法。

理想情况下,函数只是

isCyrillic c = unicodeScript c == Cyrillic

但这假设存在枚举 Unicode 脚本的类型(Unicode 范围也可以)。哪里有吗?

【问题讨论】:

  • 关于资源请求关闭投票,我觉得标准库式的东西(例如日期和时间或 Unicode)应该有一些余地。我还要说这在 Haskell 的特定情况下特别重要,相对而言,它的实际标准库范围非常狭窄。

标签: haskell unicode


【解决方案1】:

property 来自 text-icuData.Text.ICU.Char 似乎符合要求:

导入 Data.Text.ICU.Char

isCyrilic c = 属性 Block c == Cyrillic

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多