0

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

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

`checkifinstring =~ /s/

4

2 回答 2

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 的文档不是很好,但我们可以帮助您。

于 2013-09-11T04:10:10.573 回答
0

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

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

例如:

    $ ruby argv.rb  file1 file2

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

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

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

希望对你有帮助

于 2013-09-11T04:09:07.910 回答