红宝石 - 从字符串获得第n个字符
问题描述:
我想从#{vm}中获得第5到第7个字符,但是我似乎无法使其工作。我错过了什么?红宝石 - 从字符串获得第n个字符
puts "#{Colorable.wrap_color("Restarting VM's", :BLUE)}"
change_set.vms_to_restart.each do |vm|
puts "JH 0 - " + %x{hostname}
host_code = %x{hostname}[7,9]
vm_code = #vm[5,7] <---- THIS DOES NOT WORK
puts "JH 1 - #{host_code}"
puts "JH 2 - #{vm_code}"
puts "JH 3 - #{vm}"
puts "Restarting ... #{vm}"
exit 1
vm.restart
end
puts " "
输出:
Restarting VM's
JH 0 - qdscild401
JH 1 - 401
JH 2 - <---------- BLANK
JH 3 - qdcld401.vm10
Restarting ... qdcld401.vm10
答
在此代码:
vm_code = #vm[5,7]
一切后,#
是一条评论。因此,这种说法实际上是:
vm_code = nil
该行应
vm_code = vm[5,7]
或者,如果vm
对象不是String
你可以尝试
vm_code = vm.to_s[5,7]
答
该多好啊 - 我想
vm_code = vm.to_s[5,7]
但一直没有修剪掉一切的第7个字符
Restarting VM's
JH 0 - qdscild401
JH 1 - 401
JH 2 - 401.vm1 <----- NOT TRIMMED after 7th
JH 3 - qdcld401.vm10
Restarting ... qdcld401.vm10
答
后,只是为了澄清,vm[5,7]
意味着拿到第六个字符和六个附加字符后(总共7个字符)。
所以
vm = 'abcdefghijklmno'
vm[5,7]
=> 'fghijkl'
如果只想第五个字符到第七个字符
vm[4,3]
=> 'efg'
怎么样'vm_code = “#{VM [5,7]}”' –
不能再现。 – sawa
上面的vm_code =“#{vm [5,7]}”给了我这个错误: ./do_changes.rb:76:未定义的方法'[]'为#(NoMethodError) from ./do_changes.rb:72:in'each' from ./do_changes.rb:72 –
Jaron787