2013-08-01 64 views
0

我想刪除具有相同開頭的哈希所有按鍵所有按鍵,例如刪除從哈希具有相同的開始

myhash[:x_key_a] 
myhash[:x_key_b] 
myhash[:x_key_c] 

,所以我想刪除所有啓動項與xmyhash

有更好的方式來做到這一點,而不是所有的鑰匙?

回答

3
myhash.delete_if{ |key, _| key.to_s.start_with?('x') } 
+1

我會做同樣的。然而,OP的問題的答案是「否」,你必須迭代所有的密鑰。 – tessi

+0

通過檢查我的意思所有的鑰匙 - 通過keys.each等所有非鑰匙方式的鑰匙。 –

+0

@NickGinanto所以這個答案應該爲你工作。 –

0
myhash = {} 

myhash[:x_key_a] = 1 
myhash[:x_key_b] = 2 
myhash[:y_key_c] = 3 

p myhash.delete_if{ |key, _| key.match(/^x/) } 
# => {:y_key_c=>3}