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

  • BurnedInDotCom

    BurnedInDotC

    3 NİSAN 2010
  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005
  • Myron and Nejusha dance

    Myron and Ne

    2 AĞUSTOS 2012