yosigear的だいありぃ0

絶対巨人主義大学院生の書く日記

文字列置換

2007-01-24 18:31:01 | Haskell
最新の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