我是Ruby和编程的新手。我正在玩纸牌游戏。我有一个变量(straightHigh
),当前填充有代表卡片等级的数字n
。我希望将某些数字(11-14)替换为特定的字母(11 => J,12 => Q,13 => K,14 => A)。
我尝试过gsub
和gsub!
有无正则表达式。但是正则表达式对我来说很陌生。
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')
这不会引发错误,但似乎也不会改变值。
答案 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