在Haskell中查找Char的Unicode脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Haskell中查找Char的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范围也可以)。某个地方有吗?

答案

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

import Data.Text.ICU.Char

isCyrilic c = property Block c == Cyrillic

以上是关于在Haskell中查找Char的Unicode脚本的主要内容,如果未能解决你的问题,请参考以下文章

Haskell中[[Char]]和[Char]有什么区别?

Haskell 无法将预期类型“[(Char,b0)]”与实际类型“(Char,Int)”匹配

如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?

Haskell 对字符串中的字符进行递归

如何在 Haskell 中查找程序的内存使用情况

如何在 Haskell 中查找和修复由于 GC 导致的性能问题?