যদি সমস্ত কীগুলি স্ট্রিং হয় এবং সেগুলির সকলের আন্ডারস্কোর উপসর্গ থাকে তবে আপনি এটির সাহায্যে হ্যাশটি প্যাচ করতে পারেন:
h.keys.each { |k| h[k[1, k.length - 1]] = h[k]; h.delete(k) }
দ্য k[1, k.length - 1]
বিট সব grabs k
প্রথম অক্ষর ছাড়া। আপনি যদি একটি অনুলিপি চান, তবে:
new_h = Hash[h.map { |k, v| [k[1, k.length - 1], v] }]
অথবা
new_h = h.inject({ }) { |x, (k,v)| x[k[1, k.length - 1]] = v; x }
আপনি ব্যবহার করতে পারে sub
যদি k[]
স্ট্রস্ট্রিং উত্তোলনের জন্য স্বরলিপিটি পছন্দ না করেন তবে আপনি পারেন :
h.keys.each { |k| h[k.sub(/\A_/, '')] = h[k]; h.delete(k) }
Hash[h.map { |k, v| [k.sub(/\A_/, ''), v] }]
h.inject({ }) { |x, (k,v)| x[k.sub(/\A_/, '')] = v; x }
এবং, যদি কেবল কয়েকটি কীতে আন্ডারস্কোর উপসর্গ থাকে:
h.keys.each do |k|
if(k[0,1] == '_')
h[k[1, k.length - 1]] = h[k]
h.delete(k)
end
end
উপরের অন্যান্য সমস্ত রূপগুলিতে অনুরূপ পরিবর্তনগুলি করা যেতে পারে তবে এই দুটি:
Hash[h.map { |k, v| [k.sub(/\A_/, ''), v] }]
h.inject({ }) { |x, (k,v)| x[k.sub(/\A_/, '')] = v; x }
অতিরিক্ত পরিবর্তন ছাড়াই আন্ডারস্কোর উপসর্গ নেই এমন কীগুলির সাথে ঠিক থাকা উচিত।