【问题标题】:How to create hash out of specific words in text?如何从文本中的特定单词创建散列?
【发布时间】:2016-10-12 06:37:09
【问题描述】:

我有一个包含以下内容的文件:

class Rename < ActiveRecord::Migration
  def change
    rename_table :users, :vendors
    rename_table :places, :venues

    #There could be loads of similar lines
  end
end

我需要创建具有以下结构的哈希:

{ "users" => "vendors",
  "places" => "venues" }

我怎样才能做到这一点?

我已经可以使用方法 scan /rename_table.:(\S+),\s:(\S+)/ 的正则表达式获取所需的单词,但它返回了

[["users", "vendors"], ["places", "venues"]]

【问题讨论】:

  • { "users" =&gt; "vendors", "places" =&gt; "venues" } 是一个文字,所以你想用那个结构创建一个哈希是没有意义的。这就像说你想创建一个结构为"cat" 的字符串。
  • @CarySwoveland 好的。也许我试图使用错误的方法来解决我的问题。
  • @CarySwoveland 好吧,我会试着解释一下。我需要从文本文件中获取一对特定的值。例如,"users", "vendors"。之后,我必须转到另一个目录并将名称为users.rb 的文件替换为vendors.rb。我认为使用哈希是合适的。
  • 我想帮忙,但我不了解 Rails。顺便说一句,你应该添加一个 Rails 标记。

标签: ruby-on-rails ruby regex hash


【解决方案1】:
[["users", "vendors"], ["places", "venues"]].to_h
 => {"users"=>"vendors", "places"=>"venues"} 

【讨论】:

  • 由于您的数组是文字,{"users"=&gt;"vendors", "places"=&gt;"venues"} 会更简单。
【解决方案2】:
Hash[["users", "vendors"], ["places", "venues"]]
 => {"users"=>"vendors", "places"=>"venues"} 

【讨论】:

  • 由于您的数组是文字,{"users"=&gt;"vendors", "places"=&gt;"venues"} 会更简单。
猜你喜欢
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
相关资源
最近更新 更多