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

  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006
  • Yo Mama

    Yo Mama

    18 EYLÜL 2005