如何在Ruby中打印数组索引中的位置

时间:2019-03-20 18:47:01

标签: ruby

我正在尝试为字母的每个字母分配一个数字,并使用数字0到25打印字符串。

创建数组:alphabet = ('A'..'Z').to_a

打印数组:puts alphabet[6,8].join给了我GHIJKLMN的输出,这不是我所期望的。期望打印:GI

此外,如果尝试:puts alphabet[6,8,15].join,我将收到以下错误:wrong number of arguments (given 3, expected 1..2) (ArgumentError)

我正在使用Ruby 2.3.1。我在做什么错了?

2 个答案:

答案 0 :(得分:4)

Array#[]用途广泛。您可以传递索引:

alphabet[6] #=> "G"

索引和长度:

alphabet[6, 2] #=> ["G", "H"]

或范围:

alphabet[6..8] #=> ["G", "H", "I"]

如果您要获取多个索引的值,请使用values_at

alphabet.values_at(6, 8, 15)
#=> ["G", "I", "P"]

还支持范围:

alphabet.values_at(6..8, 15)
#=> ["G", "H", "I", "P"]

或重复相同的索引:

alphabet.values_at(2, 7, 4, 4, 18, 4)
#=> ["C", "H", "E", "E", "S", "E"]

答案 1 :(得分:3)

您可以使用#values_at在多个索引处获取数组的值:

alphabet = ('A'..'Z').to_a
alphabet.values_at(2, 7, 4, 4, 18, 4).join

#=> "CHEESE"

希望这会有所帮助!