繁体   English   中英

在Haskell中用数字替换字符

[英]Replacing characters with numbers in Haskell

我已经开始在Euler项目上进行有关名称列表的问题,这些名称需要替换为字母中的相应位置。 问题22中,我需要用数字替换字母:

names = ["MARY","PATRICIA","LINDA"....
replace = ??????
char2num a = map replace a
score (a,b) = a * (sum $ map char2num b)
answer = sum $ map score (zip [1..] (sort names))

我找不到的是如何用字母在字母表中的位置替换字符。 我将如何做一些替换功能(最好不是正则表达式)?

Data.Char模块中的ord函数为每个字符提供一个整数代码。 鉴于此,这就是您要寻找的功能:

import Data.Char

replace :: Char -> Int
replace c = ord c - ord 'A' + 1

我不确定ord c是否会返回字符的ASCII代码或unicode代码点,或者结果是否与机器有关。 为了对此进行抽象,我们只需从结果中减去'A'的代码,然后加上1因为我们希望字母从1而不是0

找到这种功能的一种简单方法是Hoogle
您可以在其中输入其类型在标准Haskell软件包中搜索功能。 在这种情况下, ord是搜索Char -> Int时的第二个结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM