3

たとえば、フォームにStringいくつかのタグを含む があります${...}(...文字を含まない任意の文字列を指定できます}) foo ${bar} baz ${qux}

これらのタグを置き換えたいのですが、そのためには次の形式の関数が必要です。

replace :: [String] -> [String] -> String -> String
--           tags    replacements  target    result
replace ["${bar}", "${qux}"] ["abc", "def"] "foo ${bar} baz ${qux}" == "foo abc baz def"

str_replace(これは、引数として配列を指定した場合の PHP の関数に似ています。)

どのパッケージにもそのような置換機能は見つかりませんでした。そのような関数はありますか? また、ない場合はどのように記述しますか (正しい方向を指していれば十分です。私は Haskell を学んでいます)。

4

1 に答える 1

4

ワンライナーとして:

Prelude Data.Text> Prelude.foldr (uncurry Data.Text.replace) "foo ${bar} baz ${qux}" $ Prelude.zip ["${bar}", "${qux}"] ["abc", "def"]
"foo abc baz def"

言い換えると:

replace as bs x = Prelude.foldr (uncurry Data.Text.replace) x $  Prelude.zip as bs
于 2012-07-23T21:03:06.613 に答える