繁体   English   中英

Ruby-从字符串中获取第n个字符

[英]Ruby - get nth Character from string

我正在尝试从#{vm}获取第5至第7个字符,但似乎无法正常工作。 我想念什么?

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[5,7]表示获得第六个字符和其后的六个其他字符(总共七个字符)。

所以

vm = 'abcdefghijklmno'
vm[5,7]
=> 'fghijkl'

如果只希望将FIFTH字符转换为SEVENTH字符

vm[4,3]
=> 'efg'

很好-我尝试过

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM