[解決済み】Ruby: ハッシュキーのフィルタリングを行う最も簡単な方法とは?
質問
次のようなハッシュがあります。
params = { :irrelevant => "A String",
:choice1 => "Oh look, another one",
:choice2 => "Even more strings",
:choice3 => "But wait",
:irrelevant2 => "The last string" }
そして、choice+intでないキーを全て拒否する簡単な方法が欲しいです。choice1かもしれないし、choice1〜choice10かもしれない。様々です。
choiceという単語と、その後に1桁または2桁の数字があるだけのキーを単一化するにはどうすればよいですか?
ボーナスです。
ハッシュをタブ(☑)をデリミターとする文字列にする。私はこれをやりましたが、数行のコードが必要でした。Rubyの達人なら1行程度でできるはずです。
どのように解決するのですか?
元の答えを編集する : この回答は(このコメントの時点では)選択された回答であるにもかかわらず、この回答のオリジナルバージョンは古くなっています。
他の人が私のようにこの回答から脱線しないように、ここに更新を追加しています。
他の回答にもあるように、Ruby >=2.5から
Hash#slice
メソッドは、以前は Rails でのみ利用可能でした。
例
> { one: 1, two: 2, three: 3 }.slice(:one, :two)
=> {:one=>1, :two=>2}
編集を終了します。 以下は、Ruby < 2.5 で Rails を使っていない場合に役立つと思われるオリジナルの回答ですが、現時点ではこのケースはかなり珍しいと思われます。
Rubyを使っている場合は
select
メソッドを使用します。正規表現によるマッチングを行うために、キーをSymbolからStringに変換する必要があります。これで、選択肢だけを含む新しいHashが得られます。
choices = params.select { |key, value| key.to_s.match(/^choice\d+/) }
を使用することもできます。
delete_if
を作成し、既存のHashを修正します。
params.delete_if { |key, value| !key.to_s.match(/choice\d+/) }
または、キーだけで、値が必要でない場合は、そうすることができます。
params.keys.select { |key| key.to_s.match(/^choice\d+/) }
で、これは単なるキーの配列になります。
[:choice1, :choice2, :choice3]
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み] Rubyの配列から文字列への変換
-
[解決済み] Ruby の .reject! と .delete_if の比較
-
[解決済み] Ruby Detect方式
-
[解決済み] Homebrew Portable Ruby のインストールに失敗しました (システムのバージョンが古すぎる場合もあります)
-
[解決済み] nil から String への暗黙の変換ができないエラー
-
[解決済み] Railsアプリでhttpartyを使用して基本認証を使用するには?
-
[解決済み] Rubyの予期しないキーワードの終了、および予期しない入力の終了
-
[解決済み] OpenSSL AES-256-CBC 暗号化エラー、"間違った最終ブロック長" Ruby
-
[解決済み] Rubyにバイナリ検索は組み込まれていますか?