这是此问题的扩展:Haskell replace characters in string
我想调整以下表达式,用字符串
替换charlet replaceO = map (\c -> if c=='O' then 'X'; else c)
最后,我会得到以下结果(XX可以是任意长度的字符串):
replaceO "HELLO WORLD"
"HELLXX WXXRLD"
答案 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"