2

例如我有一个 haskell 列表[72,73,74,75],我如何将这个列表输出为字符串?,列表中的所有元素都是 ascii 值。

4

4 回答 4

7

您可以组合map,将函数应用于列表的每个元素,以及将值chr转换为等效Int值的函数:Char

> map chr [72,73,74,75]
"HIJK"
于 2012-12-02T02:26:52.277 回答
6

您可以将Int代码点转换为Charusing chr :: Int -> Char; aString只是Chars 的列表。请注意,这适用于任何 Unicode 代码点,而不仅仅是 ASCII,这是您无论如何都应该做的事情。

您可以使用Hoogle找到这样的功能;只需键入类似Int -> Char的内容,它就会为您提供与该类型匹配的函数。

于 2012-12-02T02:27:11.563 回答
1

您可以使用模块 Char 中的 'chr' 将整数值转换为字符:

import Char

intListToString l = [ chr x | x <- l ]

main = do
  putStrLn $ "the string: " ++ (intListToString [72,73,74,75])

使用 'runghci' 运行上述命令会给出:

the string: HIJK
于 2012-12-02T02:26:31.427 回答
0

您希望此列表为直字符串还是带逗号的列表?除非您想将 ASCII 字符值转换为对应的字符(已经介绍过),否则您可以执行以下操作:

concatMap show [72,73,74,75]

会给你一个“72737475”字符串和

init $ tail $ show [72,73,74,75]

会给你一个 "72,73,74,75" 字符串

于 2012-12-02T13:15:27.467 回答