所以在基本的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}
答案 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");
}
});