haskell - 在 Haskell 中查找字符的 Unicode 脚本

标签 haskell unicode

我想写一个函数来检查 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 范围也可以)。某处有吗?

最佳答案

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

导入 Data.Text.ICU.Char

isCyrilic c = 属性 Block c == Cyrillic

关于haskell - 在 Haskell 中查找字符的 Unicode 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137797/

相关文章:

haskell - Haskell 中的 Pragma 语法

parsing - 如何在 Haskell 中将 Haskell 源代码解析为 AST?

php - 如何在 PHP 中将 unicode 编码为 GB18030?

python - 在 OS-X 上以交互模式在 python 中键入 utf-8 字符

iphone - 如何在 Objective C 中将 unicode 转义码转换为字符(在 iPhone 上)

javascript - 如何删除 javascript 中的 unicode 十六进制字符?

haskell - 有漏洞的数据类型

haskell - Haskell 中的嵌套列表理解

haskell - 有效地将字节打包成整数?

python - Unicode as String 无需转换 Python