我希望获得buy_house_params
,如果值为" 123"可以是123
如果值为abc
,则将其保留为原始值。
buy_house_params.each { |key, value| buy_house_params[key]=value.to_i }
但我仍然得到字符串类型整数
{"user_id"=>"", "age"=>"28", "gender"=>"male", "monthly_income"=>"48000"}
答案 0 :(得分:0)
试试这个:
class String
def is_number?
true if Float(self) rescue false
end
end
buy_house_params = {"user_id"=>"", "age"=>"28", "gender"=>"male", "monthly_income"=>"48000"}
buy_house_params.each{|k, v| buy_house_params[k] = v.to_i if v.is_number? }
=> {"user_id"=>"", "age"=>28, "gender"=>"male", "monthly_income"=>48000}
在将其转换为整数之前,它将测试每个hashmap值是否为数字。
答案 1 :(得分:0)
只有当字符串与所需格式匹配时,才能使用常规表达式解析字符串:引用的整数。
class String
def is_i?
!!(self =~ /\A[-+]?[0-9]+\z/)
end
end
在这里回答:
Test if a string is basically an integer in quotes using Ruby?
或者您可以测试它是否为整数:
>> Integer "1"
=> 1
>> Integer "one"
ArgumentError: invalid value for Integer(): "one"