如何用 Ruby 中的字母替换整数

How to substitute integers with letters in Ruby

我是 Ruby 和编程的新手。我正在做纸牌游戏。我有一个变量 (straightHigh) 当前填充了一个数字 n 代表一张牌的等级。我希望将某些数字 (11-14) 替换为特定字母 (11 => J, 12 => Q, 13 => K, 14 => A).

我已经尝试过使用和不使用正则表达式的 gsubgsub!。但是正则表达式对我来说很陌生

if y == 5
  straightHigh = n + 4

  @straightHigh.to_s.gsub!(/[11-14]/, 11 => 'J', 12 => 'Q', 13 => 'k', 14 => 'A')
  p straightHigh.to_s

end

我试过:

straightHigh.to_s.gsub!(/[11-14]/, 14 => 'Ace', 13 => K, 12 => Q, 11 => J)

导致语法错误。

我试过了

straightHigh.to_s.gsub!(/[11-14]/, 'Ace')

这不会引发错误,但似乎也不会改变值。

我不确定您要做什么,但我相信您是在尝试将整数映射到字符串?如果是这样,您可以使用散列:

# straight_high Integer
# returns String
def get_card(straight_high)
  card_values = {
    11 => 'J',
    12 => 'Q',
    13 => 'K',
    14 => 'Ace',
  }

  card_values[straight_high]
end

也许你应该使用 case 语句:

def get_card(number)
  case number
  when 2..10
    return number.to_s
  when 11
   return 'J'
  when 12
   return 'Q'
  when 13
   return 'J'
  when 14
   return 'Ace'
  end
end