如何在Haskell中将带重音字母转换为无重音字母?
移除带重音字母的Haskell实现
该实现用于将带重音的字母替换为对应无重音字母,示例效果:removeAccents "hétfő" == "hetfo"
辅助替换函数 replaceGivens
这个递归函数负责将字符串中所有指定字符替换为目标字符:
replaceGivens :: Char -> Char -> String -> String replaceGivens a _ [] = [] replaceGivens a x (y:ys) | a == y = x : replaceGivens a x ys | otherwise = y : replaceGivens a x ys
主去重音函数 removeAccents
通过检查字符串中是否包含特定带重音字母,逐一调用辅助函数完成替换:
removeAccents :: String -> String removeAccents "" = "" removeAccents b | 'á' `elem` b = replaceGivens 'á' 'a' b | 'é' `elem` b = replaceGivens 'é' 'e' b | 'í' `elem` b = replaceGivens 'í' 'i' b | 'ő' `elem` b = replaceGivens 'ő' 'o' b | 'ö' `elem` b = replaceGivens 'ö' 'o' b | 'ó' `elem` b = replaceGivens 'ó' 'o' b | 'ú' `elem` b = replaceGivens 'ú' 'u' b | 'ű' `elem` b = replaceGivens 'ű' 'u' b
内容的提问来源于stack exchange,提问作者teki2021
相关产品推荐
相关产品推荐

