在 Ruby 电子表格中用逗号替换点
Replacing dot with comma in Ruby spreadsheet
我正在尝试用逗号替换整个价格栏中的点。
这行不通。
#replace dots with commas in price column
@price_column = sheet.column(15)
@price_column.each do |c|
c.to_s.gsub(".",",").to_f
end
我做错了什么?
您实际上是将浮点数转换为字符串并对字符串进行更改,然后再次尝试转换为浮点类型。
下面是例子
- initial_value => 2.1
- 将其转换为字符串 => "2.1"
- 正在改变。 , => "2,1"
- 然后将其更改为浮点值 => 2.0
所以点值后的值丢失,你又得到了2.0。
尝试避免使用 .to_f 来解决您的问题。
问题是您在具有无效浮点格式的字符串上使用 to_f
。 ruby to_f
只取 ,
和 returns 浮点数之前的数字。您不必担心将字符串转换为浮点数。
正确的代码是:
@price_column = sheet.column(15)
@price_column.each do |c|
c.to_s.gsub!(/\./,",")
end
取决于您的 excel 设置 you have:
逗号可以是小数点的分隔符,也可以是我设置中的点,逗号是分隔符,点不是数字,所以它是一个字符串:
price dot price comma
2.4 2,4
2.5 2,5
sum price dot #VALUE! sum price comma 4,9
儿子在我的情况下,当我用 ruby 阅读它时:
require 'spreadsheet'
book = Spreadsheet.open './Workbook1.xls'
sheet1 = book.worksheet 0
column_A = sheet1.column(0)
puts "column A"
column_A.each do |cell|
puts cell.class # this a string
puts cell.gsub(".",",")
end
puts "Colum E"
column_E = sheet1.column(4)
column_E.each do |cell|
puts cell.class #this is a float
cells.to_s.gsub(".",",")
end
结果是:
irb(main):007:0> column A
String
String
String
NilClass
NilClass
Colum E
String
Float
Float
NilClass
NilClass
=> true
在这一步你有一个字符串,然后如果你 convert to float .t_f
,excel 将显示你默认的浮点格式。在 ruby 中始终是点
我正在尝试用逗号替换整个价格栏中的点。
这行不通。
#replace dots with commas in price column
@price_column = sheet.column(15)
@price_column.each do |c|
c.to_s.gsub(".",",").to_f
end
我做错了什么?
您实际上是将浮点数转换为字符串并对字符串进行更改,然后再次尝试转换为浮点类型。 下面是例子
- initial_value => 2.1
- 将其转换为字符串 => "2.1"
- 正在改变。 , => "2,1"
- 然后将其更改为浮点值 => 2.0
所以点值后的值丢失,你又得到了2.0。 尝试避免使用 .to_f 来解决您的问题。
问题是您在具有无效浮点格式的字符串上使用 to_f
。 ruby to_f
只取 ,
和 returns 浮点数之前的数字。您不必担心将字符串转换为浮点数。
正确的代码是:
@price_column = sheet.column(15)
@price_column.each do |c|
c.to_s.gsub!(/\./,",")
end
取决于您的 excel 设置 you have:
逗号可以是小数点的分隔符,也可以是我设置中的点,逗号是分隔符,点不是数字,所以它是一个字符串:
price dot price comma
2.4 2,4
2.5 2,5
sum price dot #VALUE! sum price comma 4,9
儿子在我的情况下,当我用 ruby 阅读它时:
require 'spreadsheet'
book = Spreadsheet.open './Workbook1.xls'
sheet1 = book.worksheet 0
column_A = sheet1.column(0)
puts "column A"
column_A.each do |cell|
puts cell.class # this a string
puts cell.gsub(".",",")
end
puts "Colum E"
column_E = sheet1.column(4)
column_E.each do |cell|
puts cell.class #this is a float
cells.to_s.gsub(".",",")
end
结果是:
irb(main):007:0> column A
String
String
String
NilClass
NilClass
Colum E
String
Float
Float
NilClass
NilClass
=> true
在这一步你有一个字符串,然后如果你 convert to float .t_f
,excel 将显示你默认的浮点格式。在 ruby 中始终是点