最新のghcには文字列置換の関数(subRegex)があるのだけれど、オイラのghc6.2.2には入ってないっていうんで、まぁ仕方なしとばかりに置換関数を自作。
import Text.Regex
replaceStr mtcStr newStr srcStr =
case matchRegexAll mtcStr srcStr of
Just (bfrStr, _, aftStr, _) -> (bfrStr
++ newStr
++ replaceStr mtcStr newStr aftStr)
_ -> srcStr
説明)
mtcStrに置換対象文字列、
newStrに置換するときにおく文字列、
srcStrに置換を行う文字列。
使用例)
srcStr = "AAA###BBB###DDD@@@FFF#43###@4stp####@@@@#fa09ujf"
main = do
putStrLn srcStr
putStrLn replaced1
putStrLn replaced2
where
replaced1 = replaceStr (mkRegex "###") "?" srcStr
replaced2 = replaceStr (mkRegex "@@@") "!" replaced1
import Text.Regex
replaceStr mtcStr newStr srcStr =
case matchRegexAll mtcStr srcStr of
Just (bfrStr, _, aftStr, _) -> (bfrStr
++ newStr
++ replaceStr mtcStr newStr aftStr)
_ -> srcStr
説明)
mtcStrに置換対象文字列、
newStrに置換するときにおく文字列、
srcStrに置換を行う文字列。
使用例)
srcStr = "AAA###BBB###DDD@@@FFF#43###@4stp####@@@@#fa09ujf"
main = do
putStrLn srcStr
putStrLn replaced1
putStrLn replaced2
where
replaced1 = replaceStr (mkRegex "###") "?" srcStr
replaced2 = replaceStr (mkRegex "@@@") "!" replaced1