Haskell 用字符串替换字符串中的字符
Haskell Replace characters in string with string
这是这个问题的扩展:Haskell replace characters in string
我想调整以下表达式以用字符串替换字符
let replaceO = map (\c -> if c=='O' then 'X'; else c)
最终得到如下结果(XX可以是任意长度的字符串):
replaceO "HELLO WORLD"
"HELLXX WXXRLD"
你可以根据条件从遍历和累加的角度来表述你的问题,像这样,
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"
您可以使用 concatMap
:
let replace0 = concatMap (\c -> if c=='O' then "X" else "XX")
这是这个问题的扩展:Haskell replace characters in string
我想调整以下表达式以用字符串替换字符
let replaceO = map (\c -> if c=='O' then 'X'; else c)
最终得到如下结果(XX可以是任意长度的字符串):
replaceO "HELLO WORLD"
"HELLXX WXXRLD"
你可以根据条件从遍历和累加的角度来表述你的问题,像这样,
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"
您可以使用 concatMap
:
let replace0 = concatMap (\c -> if c=='O' then "X" else "XX")