首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将散列键转换为小写-- Ruby Beginner

将散列键转换为小写-- Ruby Beginner
EN

Stack Overflow用户
提问于 2011-11-02 20:21:31
回答 9查看 16.9K关注 0票数 11

我的表字段名是小写的,我从CSV文件中得到的字段名是camelcase。有没有什么方法可以把哈希数组的键转换成小写?

下面是我现在拥有的代码:

代码语言:javascript
复制
    CSV.foreach(file, :headers => true) do |row|
      Users.create!(row.to_hash)
    end

这是失败的,因为键是驼峰大小写(我已经通过手动编辑文件使标题行全部小写来验证这一点)。

PS。另外,我想知道为什么地狱rails首先要考虑表字段名的大小写敏感性?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-11-02 20:29:33

您可以使用类似以下内容:

代码语言:javascript
复制
CSV.foreach(file, :headers => true) do |row|
  new_hash = {}
  row.to_hash.each_pair do |k,v|
   new_hash.merge!({k.downcase => v}) 
  end

  Users.create!(new_hash)
end

我没有时间去测试它,但是,你可以想一想。

希望能有所帮助

票数 16
EN

Stack Overflow用户

发布于 2013-04-03 22:06:00

您可以只对CSV使用header_converters选项:

代码语言:javascript
复制
CSV.foreach(file, :headers => true, :header_converters => lambda { |h| h.try(:downcase) }) do |row|
  Users.create!(row.to_hash)
end

把.try放进去很重要,因为空的头部会抛出异常。这比在每一行都这样做要好得多(也更快)。

票数 25
EN

Stack Overflow用户

发布于 2019-01-08 18:48:24

你可以简单的做

代码语言:javascript
复制
hash.transform_keys(&:downcase)

将哈希键更改为小写,或者您也可以根据需要将哈希值转换为小写或大写。

hash.transform_values(&:downcase)hash.transform_values(&:upcase)

代码语言:javascript
复制
hash = {:A=>"b", :C=>"d", :E=>"f"}
hash.transform_keys(&:downcase)
=> {:a=>"b", :c=>"d", :e=>"f"}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7980206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档