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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • GenTechPC

    GenTechPC

    1 Temmuz 2007
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008