将ARGV转换为字符串,以便我可以搜索文本

时间:2013-09-11 03:59:46

标签: ruby

如何获取用户输入ARGV.first并将其转换为字符串以便我可以搜索特定文本?

我尝试创建checkifinstring = #{ARGV.first}.join("")

`checkifinstring =〜/ s /

2 个答案:

答案 0 :(得分:1)

如果你已经阅读了ARGV的任何内容,你就会发现它是一个字符串数组。

因为它是一个数组,你可以走它,从中提取单个元素,或者加入元素来制作一个长字符串。

尝试编写一些代码,并使用一些额外的参数从命令行执行它。插件行如:

puts ARGV.first
puts ARGV.last
puts ARGV.join(' ')

ARGV.each_with_index do |arg, i|
  puts "arg ##{ i } ==> #{ arg }"
end

第一行将返回传递给脚本的第一个参数,第二行将是最后一个,第三行将是传入的命令的合理传真。其余行将返回传递给脚本的每个参数及其索引号。

我将其保存为'test.rb'并从命令行运行:

ruby ~/Desktop/test.rb one two three four

得到了这个输出:

one
four
one two three four
arg #0 ==> one
arg #1 ==> two
arg #2 ==> three
arg #3 ==> four

一旦你知道了这些东西,剩下的就很简单了:

ARGV.first['on'] # => "on"
ARGV.first['an'] # => nil

如果上述内容没有意义,那么请深入研究String[]及其对子字符串匹配的使用。

如果你想使用命令行参数,我强烈建议你不要试图重新发明你自己的系统来传递它们,而是依赖Ruby的OptionParser类。它更加复杂和强大,并且允许您使用标志,可选和必需参数,长名称和短名称,内置帮助为脚本提供标准命令行界面,并且可以将字符串中的输入值强制转换为整数和数组。 OptionParser的文档不是很好,但我们可以帮助您。

答案 1 :(得分:0)

ARGV包含用于运行ruby的命令行参数,第一个值包含可执行文件的名称。

返回ARGV数组,其中包含传递给脚本的参数,每个元素一个。

例如:

    $ ruby argv.rb  file1 file2

   ARGV  #=> ["file1", "file2"]
   ARGV.first #=> "file1"

因此,根据您的问题,如果您获得了字符串数组,则可以轻松地从该数组中搜索输入字符串

ARGV.select{|f| f == "file1"}

希望它能帮到你