简单的Haskell字符串管理
时间:2020-03-05 18:53:58 来源:igfitidea点击:
我想用Haskell解决一个小问题:
让我们用一个更改字符串中所有通配符的函数代替一个具体参数。该函数具有以下特征的签名:
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)"
解决方案
回答
我们可以使用Text.Regex包。
示例可能如下所示:
import Text.Regex(mkRegex, subRegex) subs :: String -> String -> String -> String subs wildcard input value = subRegex (mkRegex wildcard) input value
回答
有关示例,请参阅http://bluebones.net/2007/01/replace-in-haskell/,该示例与所需的代码完全相同。
回答
使用正则表达式(" Text.Regex.Posix")和" / \ Wx \ W /"(Perl表示法)的搜索替换。只需将x替换为6.2会给我们带来x + quux的麻烦。
Haskell Regex Replace以获得更多信息(我认为这应该导入到SO中。
如果需要额外的支持,我们可以将表达式解析为AST并在该级别上进行替换。