我在格式化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。 :
也许我可以使用类型<.>
的一些正则表达式,然后删除它。 (当然做较小的比赛,或者它会给我完整的比赛)
答案 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不是完全的,会在空列表[]上给你一个运行时错误。