Ruby 如何获取数组中字符串的最后一个字符

Ruby 如何获取数组中字符串的最后一个字符,ruby,Ruby,我试图获取数组中字符串的最后一个字符,如下所示: Down = ["up 1", "up 2", "up 3"] 我想接收“1”、“2”、和“3”,并为每个生成一个类似于的条件语句。每个基于结果,将运行以下逻辑: 如果最后一个字符是“1”,则让@x=0 如果最后一个字符是“2”,则让@x=1 如果最后一个字符是“3”,则让@x=2 变量名称不应以大写字母开头 > down = ["up 1", "up 2", "up 3"] > numbers_ary = down.map{|s

我试图获取数组中字符串的最后一个字符,如下所示:

Down = ["up 1", "up 2", "up 3"]
我想接收
“1”
“2”
、和
“3”
,并为每个
生成一个类似于
的条件语句。每个
基于结果,将运行以下逻辑:

  • 如果最后一个字符是
    “1”
    ,则让
    @x
    =
    0
  • 如果最后一个字符是
    “2”
    ,则让
    @x
    =
    1
  • 如果最后一个字符是
    “3”
    ,则让
    @x
    =
    2

变量名称不应以大写字母开头

> down = ["up 1", "up 2", "up 3"]
> numbers_ary = down.map{|s|s[-1]}
#=> ["1", "2", "3"]

> numbers_ary = down.map{|s| s.chars.last}
#=> ["1", "2", "3"]
根据结果生成类似for.each的条件语句

如果对数组进行循环,并使用任何逻辑将值赋给同一变量
@x
,它将被覆盖并赋给最后一个值

但根据你对逻辑的关注,你可以这样做:

num = numbers_ary.sample #sample is used to pick random element from numbers_ary
case num
  when "1", "2", "3"
   @x = num.to_i - 1
end

下面的答案与rails相关。要删除该依赖项,请将
down.last
更改为
down.chars.last
down[-1]

Down.each do |down|
  case(down.last)
  when '1'
   @x = 0
  when '2'
   @x = 1
  when '3'
   @x =2
  end
end
编辑:我正在添加在irb控制台上运行此操作后获得的输出,供那些在我发布此答案之前添加有关我运行此操作的评论并在没有任何明确评论的情况下否决此答案的人使用

irb(main):014:0> Down=["up 1", "up 2", "up 3"]
=> ["up 1", "up 2", "up 3"]
irb(main):015:0> Down.each do |down|
irb(main):016:1* case(down.last)
irb(main):017:2> when '1'
irb(main):018:2> @x = 0
irb(main):019:2> puts "word: #{down}, last:#{down.last}, x: #{@x}"
irb(main):020:2> when '2'
irb(main):021:2> @x = 1
irb(main):022:2> puts "word: #{down}, last:#{down.last}, x: #{@x}"
irb(main):023:2> when '3'
irb(main):024:2> @x = 2
irb(main):025:2> puts "word: #{down}, last:#{down.last}, x: #{@x}"
irb(main):026:2> end
irb(main):027:1> end
word: up 1, last:1, x: 0
word: up 2, last:2, x: 1
word: up 3, last:3, x: 2
=> ["up 1", "up 2", "up 3"]

你能发布你到目前为止尝试过的东西吗?每个
是什么?如果数字超过一位数,你可以做
down.map{str | str[/\d+\z/]}
。此外,变量名应全部小写,当它包含所有
“up”
s!的字符串时,为什么要将其调低!?在将其添加为答案之前,您是否运行了此操作?是的,我运行了此操作。你为什么这么问?不管是谁否决了这个答案。请让我知道why@SebastianPalma请看上面的输出,我不知道您使用的是哪一个Ruby版本,也不知道是什么其他因素造成了差异。请参见使用Ruby 2.4.1的irb中的。不管怎样,我不是这里的选民。不,答案不应该是填鸭式的。在我看来,对于那些完全没有试图解决问题的问题,答案应该只包含提示,而不是有效的解决方案。