3

Haskellで解決したい小さな問題があります。文字列内のすべてのワイルドカードを変更する関数を1つの具体的なパラメーターに置き換えましょう。この関数の署名は次のとおりです。

subs :: String -> String -> String -> String
-- example:
-- subs 'x' "x^3 + x + sin(x)" "6.2" will generate
--          "6.2^3 + 6.2 + sin(6.2)"
4

4 に答える 4

6

Text.Regexパッケージを使用できます。

あなたの例は次のようになります。

import Text.Regex(mkRegex, subRegex)

subs :: String -> String -> String -> String
subs wildcard input value = subRegex (mkRegex wildcard) input value
于 2008-09-15T18:35:34.870 に答える
2

探しているコードとまったく同じように見える例については、http://bluebones.net/2007/01/replace-in-haskell/を参照してください。

于 2008-09-15T18:38:07.457 に答える
2

このような場合には、 text-format-simpleライブラリを使用できます。

import Text.Format
format "{0}^3 + {0} + sin({0})" ["6.2"]
于 2011-08-24T11:55:02.940 に答える
1

正規表現()を使用し、 (Perl表記)Text.Regex.Posixを検索して置き換えます。に/\Wx\W/置き換えるだけで問題が発生します。x6.2x + quux

詳細については、 Haskell Regex Replaceを参照してください(これはSOにインポートする必要があると思います。

追加のハードコアの場合は、式をASTとして解析し、そのレベルで置換を行うことができます。

于 2008-09-15T18:40:16.890 に答える