Haskell用字符串替换字符串中的字符

时间:2015-04-20 15:48:27

标签: string haskell replace char

这是此问题的扩展:Haskell replace characters in string

我想调整以下表达式,用字符串

替换char
let replaceO = map (\c -> if c=='O' then 'X'; else c)

最后,我会得到以下结果(XX可以是任意长度的字符串):

replaceO "HELLO WORLD"
"HELLXX WXXRLD"

2 个答案:

答案 0 :(得分:3)

您可以使用concatMap

let replace0 = concatMap (\c -> if c=='O' then "X" else "XX")

答案 1 :(得分:0)

你根据条件来表达你的问题,就像这样,

replace :: String -> Char -> String -> String
replace xs c s = foldr go [] xs

 where go x acc = if x == c  then acc ++ s
                             else acc ++ [x]

对于你的例子:

>replace "HELLO WORLD" 'O' "XXX" 
> "HELLXXX WXXXRLD"