2011-04-15 110 views
5

可能重复:
convert string list to int list in haskellHaskell的字符串列表

嗨,

我有一个字符串 “12345”。我如何以列表形式显示它[1,2,3,4,5]?还有,如果我有像“## %%”这样的字符串呢?我无法将其转换为int。如何以[#,#,%,%]的形式查看它?

+2

这些不重复。一种是将字符串转换为列表,另一种是将字符串列表转换为列表。 – Scott 2011-05-01 14:20:52

+0

在Haskell中,“12345”实际上是['1','2','3','4','5']。这是你想要的还是它[[1,2,3,4,5]]? – 2012-01-02 13:20:46

回答

7

使用intersperse

myShow :: String -> String 
myShow s = concat ["[", intersperse ',' s, "]"] 
9
import Data.Char (digitToInt) 

map digitToInt "12345" 
+1

Thx,学到了新的东西。 – markmywords 2011-04-15 16:49:12

+2

如果我没有数字怎么办? – thetux4 2011-04-15 17:47:28

5

您应该映射函数读取X ::诠释每个字符串的元素作为一个字符列表:

map (\x -> read [x]::Int) "1234" 

如果你有非数字字符,你应该先喜欢它过滤这样的:

import Data.Char 
map (\x -> read [x]::Int) (filter (\x -> isDigit x) "1234##56") 

导致:

[1,2,3,4,5,6]