将字符串中以空格分隔的数字的字符串转换为整数,并将它们放在变量中

时间:2011-11-13 23:38:35

标签: haskell

我正在尝试编写一个函数来接受字符串中4个空格分隔数字的字符串,将它们分开并转换为整数,并将它们放在4个单独的整数变量中。我知道我可以使用splitWs将它们拆分成一个字符串数组,使用!!来访问各个元素,然后使用以下内容转换为整数:

f :: [String] -> [Int]
f = map read

但我无法弄清楚如何将它们放在一起。

2 个答案:

答案 0 :(得分:14)

使用words函数按空格分割字符串。然后你可以map read结果。

因此,一个简单的实现将是:

readNumbers :: String -> [Int]
readNumbers = map read . words

然后,如果您只需要四个数字,请使用模式匹配:

case readNumbers string of
    [a,b,c,d] -> ...
    _         -> error "Expected four numbers"

答案 1 :(得分:0)

Haskell中没有变量,Haskell字符串表示为列表。所以

尝试:

import Data.List.Utils
nums=map read $split " " "1 2 3 4" :: [Int]

您可以使用(!!):

访问单个元素
> nums(!!)0
1

HTH Chris