ruby - 如何仅将数字的字符串哈希值转换为整数

标签 ruby string integer type-conversion

我有从几个不同的 XML 数据库转储中导入的散列行,看起来像这样(但具有不同的键):

{"Id"=>"1", "Name"=>"Cat", "Description"=>"Feline", "Count"=>"123"}

我尝试使用 #to_i 但它将非数字字符串转换为 0:

"Feline".to_i
# => 0

但我想要的是让 "Feline" 保持字符串的方式,而上面示例中的 IdCount成为整数 1123

有没有简单的方法将数字字符串值转换为整数?

最佳答案

一行回答: 使用正则表达式方法

h.merge(h) { |k, v| v.match(/\A[+-]?\d+?(\.\d+)?\Z/) ? v.to_i : v }

使用整数方法

h.merge(h) { |k, v| Integer(v) rescue v }

关于ruby - 如何仅将数字的字符串哈希值转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318021/

相关文章:

c++ - 为什么 numeric_limits<int>::max() > numeric_limits<int>::infinity()?

java - 请求 int 输入时出现奇怪的返回值

ruby-on-rails - 如何将表作为数组数组获取,其中每个子数组是一列(而不是一行)

ruby-on-rails - 模拟 rspec 中的错误/异常(不仅仅是它的类型)

c++ - C++中的日期格式

c - C编程中的当前维数组

regex - 如何从shell中的字符串中检索url?

ruby - 在 Ruby 哈希上调用时, `select` 和 `select!` 之间是否存在性能差异?

ruby - 在连接之前定义 Sequel 模型

java - 在使用对象计算整数时,加号运算符如何工作?