gpt4 book ai didi

ruby - 我怎样才能像 shell 那样拆分字符串来填充 ARGV?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:33 24 4
gpt4 key购买 nike

我想要一个 Ruby 方法或一个正则表达式,它们可以让我将一串命令行参数拆分成一个类似 ARGV 的数组。我要问的是类似于 this question , 但在 Ruby 中。

我正在为使用 Trollop 处理命令行输入的 Ruby 程序编写单元测试(尽管这个问题对于任何其他选项解析器都是相同的)。

我要测试的方法如下所示:

def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end

在我的程序中,我调用了 parse_args(ARGV)。在我的测试中,我认为我可以传入一个按空格拆分的字符串,但这不是 ARGV 的行为。比较以下内容:

./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]

'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]

最佳答案

Shellwords如果您使用的是 1.9。如果你没有使用 1.9 但有 Rails 那么你会得到 Shellwords来自 Rails。在任何一种情况下,您都可以使用 Shellwords.shellwords 像 POSIX shell 一样解析字符串:

>> Shellwords.shellwords("Where is 'pancakes house'?")
=> ["Where", "is", "pancakes house?"]

如果您没有 Rails 或 1.9,那么您可以从 Rails 中获取 shellwords.rb 并使用它。

更新:看起来像Shellwords在 Ruby 1.8 中可用(谢谢 Michael Khol)。关于哪个特定版本有它,我得到的结果不明确。

关于ruby - 我怎样才能像 shell 那样拆分字符串来填充 ARGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com