ruby - 修剪尾随 .0

标签 ruby excel ruby-2.0 roo-gem

我有一个包含零件号的 Excel 列。这是一个示例

如您所见,它可以是许多不同的数据类型:FloatIntString。我正在使用 roo gem 来读取文件。问题是 roo 将整数单元格解释为 Float,向它们添加尾随零 (16431 => 16431.0)。我想修剪这个尾随零。我不能使用 to_i 因为它会修剪所有需要小数的单元格的尾随数字(上例中的第一行),并且会在 中的字符串 char 之后剪切所有内容String 行(上例中的最后一行)。

目前,我有一种方法可以检查单元格的最后两个字符,如果它们是“.0”则将其修剪

def trim(row)
    if row[0].to_s[-2..-1] == ".0"
        row[0] = row[0].to_s[0..-3]
    end
end

这行得通,但感觉很糟糕而且很老套。将我的 Excel 文件内容放入 Ruby 数据结构的正确方法是什么?

最佳答案

def trim num
  i, f = num.to_i, num.to_f
  i == f ? i : f
end

trim(2.5) # => 2.5
trim(23) # => 23

或者,从字符串:

def convert x
  Float(x)
  i, f = x.to_i, x.to_f
  i == f ? i : f
rescue ArgumentError
  x
end

convert("fjf") # => "fjf"
convert("2.5") # => 2.5
convert("23") # => 23
convert("2.0") # => 2
convert("1.00") # => 1
convert("1.10") # => 1.1

关于ruby - 修剪尾随 .0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533026/

相关文章:

php - 可以导入 .xls 文件但不能将 .xlsx 导入 MYSQL 数据库

vba - 将不连续的范围从一张纸复制到另一张纸

ruby - 为 Net::HTTP 指定字符编码

ruby - 无法使用 ruby​​ 2.0 安装 bundler 1.3.0

ruby-on-rails - ruby on rails 如何处理 NaN

ruby - 尝试安装 gems 时出现 SSL 证书验证失败错误

ruby - sqlite3不关闭db可以吗

excel - 使用 VBA 代码 Ping IP 地址并在 Excel 中返​​回结果

ruby - 托管独立的 ruby​​ 脚本

ruby - UTF-8 Ruby 中的无效字节序列