Ruby将字符串数组转换为字符串

时间:2016-06-08 06:12:39

标签: ruby chef chef-recipe chef-solo

我有一个ruby字符串数组值,我希望将其作为字符串值。我正在使用红宝石与厨师食谱。在Windows平台上运行。代码 -

version_string = Mixlib::ShellOut.new('some.exe -version').run_command     
Log.info(version.stdout.to_s)    
extract_var = version_string.stdout.to_s.lines.grep(/ver/)
Log.info('version:'+ extract_var.to_s)

输出即将到来 -

version           530    
[2016-06-08T07:03:49+00:00] INFO:  version ["version                530\r\n"]

我想只提取530个字符串。

3 个答案:

答案 0 :(得分:3)

很久以来没有看到自Rot:)

您可以使用一些Chef辅助方法和正则表达式来使这更容易。

output = shell_out!('saphostexec.exe -version', cwd: 'C:\\Program Files\\hostctrl\\exe').stdout
if output =~ /kernel release\s+(\d+)/
  kernel_version = $1
else
  raise "unable to parse kernel version"
end
Chef::Log.info(kernel_version)

答案 1 :(得分:2)

如您所愿val = 720而不是val = "720",您可以写

val = strvar.first.to_i
  #=> 720

答案 2 :(得分:0)

您可以使用String#[regexp]返回current_kernel字符串中以整数形式找到的第一个数字系列:

current_kernel[/\d+/].to_i
  #=> 720