我有一个包含零件号的 Excel 列。这是一个示例
如您所见,它可以是许多不同的数据类型:Float
、Int
和String
。我正在使用 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/