SORU
15 EYLÜL 2011, PERŞEMBE


Ruby: Kolay Filtre Hash Anahtarları?

Bu gibi görünen bir karma var:

params = { :irrelevant => "A String",
           :choice1 => "Oh look, another one",
           :choice2 => "Even more strings",
           :choice3 => "But wait",
           :irrelevant2 => "The last string" }

Ve basit bir şekilde seçim int değil tüm tuşları reddetmek istiyorum. Choice1 veya choice10 ile choice1 olabilir. Değişir.

Nasıl sadece sözcük seçimi ve bir rakam ya da onları basamak anahtarları tek çıkar?

Bonus:

Ayırıcı olarak sekme (\t) ile bir dize karma çevirin. Ben yaptım ama birden fazla satır kodu aldı. Genellikle ana Rubicians veya çizgiler yapabilir.

CEVAP
15 EYLÜL 2011, PERŞEMBE


select yöntemi kullanabilirsiniz. Not regexp maç yapmak için bir Dize için bir Sembol anahtarı çevirmeniz gerekir. Bu sadece seçimler ile yeni bir Karma verecektir.

choices = params.select { |key, value| key.to_s.match(/^choice\d /) }

ya delete_if Kullanım ve mevcut Karma gibi değiştirebilirsiniz

params.delete_if { |key, value| !key.to_s.match(/choice\d /) }

ya da eğer sadece anahtarları ve değerleri değil ise istediğiniz zaman yapabilirsiniz:

params.keys.select { |key| key.to_s.match(/^choice\d /) }

ve bu, örneğin [:choice1, :choice2, :choice3] tuşları sadece bir Dizi verecektir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BaaaStuds's channel

    BaaaStuds's

    10 Mart 2009
  • mahalodotcom

    mahalodotcom

    8 HAZİRAN 2007
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012