gpt4 book ai didi

ruby-on-rails - 在 Ruby 中导入时将字符串负数转换为整数时出错

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:22 25 4
gpt4 key购买 nike

我的 Ruby 环境是:Ruby 2.3.1 和 Rails 5.0.0.1。

我正在尝试将负字符串数字转换为整数,例如:

当我尝试在 irb 终端中打开这个“-2000”时,我得到了预期的结果 -2000

但是当我从 CSV 文件导入这些数据时,我正在尝试转换它。

我正在使用以下信息:

CSV 文件

345,­-2000
345,120000

代码文件

CSV.foreach("file.csv") do |row|
p [row[0], row[1]]
p row[1].to_i
p row[1].force_encoding('UTF-8').to_i
p Integer(row[1])
p Integer(row[1].force_encoding('UTF-8'))
end

我明白了:

["345", "­-2000"]
0
0
'Integer': invalid value for Integer(): "\xC2\xAD2000" (ArgumentError)
'Integer': invalid value for Integer(): "\xC2\xAD2000" (ArgumentError)

使用 Integer(),我发现 - 符号由“\xC2\xAD”表示。

总而言之,to_i 方法正在将“\xC2\xAD2000”转换为 0,并且 Integer() 正在触发错误。

有人可以帮忙吗?

感谢您的关注。

最佳答案

看起来你实际上有两个角色..

就我个人而言,我会将这种字符组合替换为实际的连字符,然后转换为整数:

CSV.foreach("file.csv") do |row|
p row[1].sub("\xC2\xAD", '-').to_i
end

那个,或者清理源文件。不确定您是如何生成它的,但值得研究。

关于ruby-on-rails - 在 Ruby 中导入时将字符串负数转换为整数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40768719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com