我正在为一个项目制作一个简单的外壳,我希望像在 Bash 中一样解析参数字符串。
foo bar "hello world" fooz
应该变成:
["foo", "bar", "hello world", "fooz"]
等等。到目前为止,我一直在使用CSV::parse_line
,将列分隔符设置为" "
和.compact
输出。问题是我现在必须选择是支持单引号还是双引号。CSV
不支持多个分隔符。
Python 有一个专门用于此的模块shlex
:
>>> shlex.split("Test 'hello world' foo")
['Test', 'hello world', 'foo']
>>> shlex.split('Test "hello world" foo')
['Test', 'hello world', 'foo']
是否有任何隐藏的内置 Ruby 模块可以做到这一点?任何有关解决方案的建议将不胜感激。