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

时间:2019-07-15 15:48:38

标签: regex ruby gsub

我是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')

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

2 个答案:

答案 0 :(得分:2)

也许您应该使用一个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

答案 1 :(得分:1)

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

# 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