String 在Haskell中用数字替换字符
我已经开始做关于Euler项目的问题,关于需要用字母表中相应位置替换的姓名列表。在“我需要替换”中,用数字替换字母:String 在Haskell中用数字替换字符,string,haskell,String,Haskell,我已经开始做关于Euler项目的问题,关于需要用字母表中相应位置替换的姓名列表。在“我需要替换”中,用数字替换字母: 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)) 我找不到的是如何用字母表中的位置
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))
我找不到的是如何用字母表中的位置替换字符。如何制作替换函数(最好不是regex)?数据中的
ord
函数。Char模块为每个字符提供一个整数代码。考虑到这一点,这将是您正在寻找的功能:
import Data.Char
replace :: Char -> Int
replace c = ord c - ord 'A' + 1
我不确定ord c
是否会返回字符的ASCII码或unicode码点,或者结果是否依赖于机器。为了从中提取,我们只需从结果中减去'A'
的代码,然后添加1
,因为我们希望字母表从1
开始,而不是0
找到此类函数的简单方法是。在那里,您可以通过输入其类型在标准Haskell包中搜索函数。在这种情况下,
ord
是搜索数据时的第二个结果。Data.Char
模块中的ord
函数为每个字符提供一个整数代码。考虑到这一点,这将是您正在寻找的功能:
import Data.Char
replace :: Char -> Int
replace c = ord c - ord 'A' + 1
我不确定ord c
是否会返回字符的ASCII码或unicode码点,或者结果是否依赖于机器。为了从中提取,我们只需从结果中减去'A'
的代码,然后添加1
,因为我们希望字母表从1
开始,而不是0
找到此类函数的简单方法是。在那里,您可以通过输入其类型在标准Haskell包中搜索函数。在这种情况下,
ord
是搜索时的第二个结果