Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Haskell中用数字替换字符_String_Haskell - Fatal编程技术网

String 在Haskell中用数字替换字符

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)) 我找不到的是如何用字母表中的位置

我已经开始做关于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))

我找不到的是如何用字母表中的位置替换字符。如何制作替换函数(最好不是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
是搜索时的第二个结果