我想编写一个函数来检查 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 范围也可以)。某处有吗?
最佳答案
来自 text-icu 的 property
的 Data.Text.ICU.Char
似乎符合要求:
导入 Data.Text.ICU.Char
isCyrilic c = 属性 Block c == Cyrillic
关于haskell - 在 Haskell 中查找字符的 Unicode 脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49137797/