删除xml行的空格和闭包标记

时间:2014-06-15 16:50:56

标签: haskell

我在格式化IO字符串时遇到问题,但我不知道如何做到这一点。

例如:

tryA (arrIO (\s -> hPutDocument (\h -> hPutStrLn h 
=<< readProcess "grep" ["-n",s,"camera2.owl"] "")))

正如我在帖子中提到today Here时提到的,我发现我的字符串s有许多我不需要它的东西。

例如,通常我在s上有字符串:

<owl:Class rdf:about="http://www.xfront.com/owl/ontologies/camera/#SLR">   </owl:Class>

我想要的是删除>后可用的空格并删除</owl:Class>

的关闭标记

我怎么能在哈斯克尔那样做? 我必须在将转换发送到我的grep函数之前进行转换。

P.S。 : 也许我可以使用类型<.>的一些正则表达式,然后删除它。 (当然做较小的比赛,或者它会给我完整的比赛)

1 个答案:

答案 0 :(得分:0)

只要在结束标记之前总是有空格并且标记本身没有它们,那么从String中删除它的最小方法就是:

import Data.List

removeClosingTag = unwords . init . words

在GHCi会议上,我刚刚开始:

λ> let myString = "<owl:Class rdf:about=\"http://www.xfront.com/owl/ontologies/camera/#SLR\">   </owl:Class>"
λ> (unwords . init . words) myString
"<owl:Class rdf:about=\"http://www.xfront.com/owl/ontologies/camera/#SLR\">"

编辑:警告:init不是完全的,会在空列表[]上给你一个运行时错误。