如何以类似于ARGV的方式将字符串解析为数组?

dan*_*dan 4 ruby

我需要转一个这样的字符串:

'apple orange "banana pear"'
Run Code Online (Sandbox Code Playgroud)

进入这样的数组

["apple", "orange", "banana pear"]
Run Code Online (Sandbox Code Playgroud)

这就像命令行参数转换为ARGV数组的方式.在Ruby中执行此操作的最佳方法是什么?

sep*_*p2k 10

您可以使用Shellwordsruby标准库中的模块,该库完全用于此目的:

require 'shellwords'
Shellwords.shellwords 'apple orange "banana pear" pineapple\ apricot'
#=> ["apple", "orange", "banana pear", "pineapple apricot"]
Run Code Online (Sandbox Code Playgroud)

从上面的示例中可以看出,这也允许您以与shell中相同的方式使用反斜杠转义空格.当然,您也可以使用单引号而不是双引号,并使用反斜杠转义这两种引号以获得文字的双引号或单引号.