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

  • backyardjay

    backyardjay

    8 ŞUBAT 2009
  • grickle

    grickle

    22 AĞUSTOS 2006
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011