我想要一个从字符串中删除重音的函数。输入/输出示例:
regardé -> regarde
fête -> fete
答案 0 :(得分:14)
text-icu
库包含各种Unicode实用程序。我们还需要text
库才能将String
转换为Text
。我通过将以下两行添加到我的cabal文件中的build-depends
来安装它们:
build-depends: --- other packages...
, text-icu >= 0.7.0.1 && < 1
, text
安装了这些依赖项后,我们可以使用以下过程删除重音:
String
转换为Text
String
。记住这一切,我们提出以下功能:
import Data.List
import qualified Data.Text as T
import Data.Text.ICU.Char
import Data.Text.ICU.Normalize
canonicalForm :: String -> String
canonicalForm s = T.unpack noAccents
where
noAccents = T.filter (not . property Diacritic) normalizedText
normalizedText = normalize NFD (T.pack s)
如果您不需要从String
转换,则可以跳过T.pack
和T.unpack
来电。