如何用 Ruby 中的字母替换整数
How to substitute integers with letters in Ruby
我是 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')
这不会引发错误,但似乎也不会改变值。
我不确定您要做什么,但我相信您是在尝试将整数映射到字符串?如果是这样,您可以使用散列:
# 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
我是 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')
这不会引发错误,但似乎也不会改变值。
我不确定您要做什么,但我相信您是在尝试将整数映射到字符串?如果是这样,您可以使用散列:
# 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