如何将字符串转换为哈希值或将其添加到哈希值中

时间:2017-05-27 15:45:30

标签: ruby methods hash split

所以在基本的Ruby中,我试图弄清楚如何将字符串转换为哈希或将字符串放入哈希。我想要pokemon项作为键和值的整数。

这样的事情:

hash = {}
pokemon_list = "pikachu charizard jigglypuff bulbasaur"

def create_poke_list(string)
  hash << string.split
end
create_poke_list

预期产出:

 hash
 #=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}

2 个答案:

答案 0 :(得分:3)

pokemon_list.split.product([0]).to_h
  #=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}

步骤:

a = pokemon_list.split
  #=> ["pikachu", "charizard", "jigglypuff", "bulbasaur"]
b = a.product([0])
  #=> [["pikachu", 0], ["charizard", 0], ["jigglypuff", 0], ["bulbasaur", 0]]
b.to_h
  #=> <hash shown above>

可替换地,

Hash[pokemon_list.split.product([0])]

此处Array#product只是pokeman_list.zip(a)的简写形式,其中a是一个由pokenman_list.size个相等元素组成的数组,此处为零。另见Enumerable#zip

或使用String#gsub

这是另一种不需要将字符串转换为数组的方法。

pokemon_list.gsub(/[[:alpha:]]+/).with_object({}) { |w,h| h[w] = 0 }
  #=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}

这是有效的,因为gsub在没有块的情况下执行时返回一个枚举器。不可否认的是,这种方法不常用(因为它不会替换字符串中的字符),但我发现它有时很有用。

答案 1 :(得分:0)

如果您需要使用默认值0初始化的哈希,则可以执行

    $("#textInput").keypress(function (e) {
     if(e.which == 13) {
        console.log("123");
    }


});