在Haskell中分割类似shell的语法?
我想知道怎么在Haskell中用类似于Shell的语法来分割一个字符串。在Python中,有一个类似的功能叫做 shlex.split
。
>>> shlex.split('''/nosuchconf "/this doesn't exist either" "yep"''')
['/nosuchconf', "/this doesn't exist either", 'yep']
2 个回答
0
这是一个链接,指向一个名为“shellwords”的Haskell包。Haskell是一种编程语言,而这个包提供了一些工具,帮助程序员处理与命令行相关的文本,比如分割字符串等。你可以通过这个链接了解更多关于这个包的信息。
λ> import ShellWords
λ> parse "/nosuchconf \"/this doesn't exist either\" \"yep\""
Right ["/nosuchconf","/this doesn't exist either","yep"]
1
我不太确定你具体想表达什么:你是想从一个字符串中提取所有被引号包围的子字符串吗?需要注意的是,与Python等语言不同,Haskell只有一种引号来表示字符串,那就是"..."
。
可以考虑以下几种方法:
如果你能说明一下你为什么需要这样的功能,那可能会更有帮助:你是在尝试解析现有的shell脚本吗?如果是的话,language-sh可能会对你有帮助。不过,你在Haskell内部不应该使用这样的字符串,而是应该使用[String]
或者其他的方式。