2つのワード状態がニュージャージー州とサウスカロライナ州などのように機能するようにするには、どのような方法が欠けていますか?単語間のアンダースコアを入れればわかりますが、あまりクールではないアンダースコアを入力に含める必要もあります。私は本当に助けていただければ幸いです。ありがとう!Ruby:空白で区切られた2ワードのハッシュキー
答えて
大文字は、文字列の最初の文字のみをフォーマットするため、複数の単語を含む文字列では機能しません。あなたは、スペースであなたの文字列を分割し、各単語を大文字にし、それをバックに参加しようとすることができます:
state = gets.chomp.split(' ').map(&:capitalize).join(' ')
あなたがRailsのを使用していた場合、あなただけのtitleize
を使用することができます。
gets.chomp.titleize
うわー!ありがとう! state = gets.chomp.split( '').map(&:capitalize).join( '') は完全にうまく機能しました。しかし、もしあなたが気にしないなら。あなたは私にマップ方法を説明できますか?私はちょうど2週間前にコーディングを学び始めました。 – deftool
ユーザー入力を変換するヘルパーメソッドを追加できますか?ヨルダンへ
#state = "new jersey"
state.gsub!(/\b[a-z]/, &:capitalize)
#state = "New Jersey"
- クレジット最も簡単な解決策は、ユーザの入力をハッシュキーを小文字にし、その後、
downcase
ことであろうように、コメント
または、より簡潔に: 'state.gsub(/ \ b [a-z] /、&:capitalize)' –
ああ!私は大文字小文字の小文字を@CarySwoveland小文字にしたことに気付かなかった...あなたの答えを見た^ – Trajanson
'capitalize'は各単語の最初の文字で構成される文字列を大文字にしています。他の文字を小文字に変換するために、正規表現を変更して各単語を完全に一致させる必要があります。脇に:私はあなたの答えにあなたの提案に感謝しないことをお勧めします。それをしたい場合は、コメントを使って答えをきれいにしてください。 (一部の人は同意しないかもしれません) –
にそれはそうです。
us_capitals = {
# ...
"nebraska" => "Lincoln",
"nevada" => "Carson City",
"new hampshire" => "Concord",
"new jersey" => "Trenton",
# ...
}
loop do
puts "Enter a state to lookup it's capital:"
state = gets.chomp.downcase
puts us_capitals[state]
end
OPには、この質問とは無関係の理由で、州がハッシュで大文字にする必要があることに注意してください。 –
gets
が"west virginIa\n"
を返すとします。
r = /[[:alpha:]]+/
state = gets.chomp.squeeze(' ').gsub(r) { |s| s.capitalize }
#=> "west virginIa\n".chomp.squeeze(' ').gsub(r) { |s| s.capitalize }
#=> "west virginIa".squeeze(' ').gsub(r) { |s| s.capitalize }
#=> "west virginia".gsub(r) { |s| s.capitalize }
#=> "West Virginia"
us_capitals[state]
#=> "Charleston"
gets
もし戻っその後、我々は
state = gets.chomp.squeeze(' ').gsub(r) { |s| s.capitalize }
#=> "West Virgin1a"
us_capitals[state]
#=> nil
リコールを得るString#capitalizeは、(それが文字であれば)大文字に文字列の最初の文字を変換し、それはまた、他のすべてを変換していること小文字にする文字列の文字。
ありがとうございました。あなたのソリューションもかなりうまくいきました。私がpotashinに言ったように、私はプログラミングの初期段階にいる。私は本当に助けていただきありがとうございますが、コードは私の現在の能力にはあまりにも技術的に見えます。もしあなたがr変数とgsubメソッドにしたことをとてもうれしく思います。それ以外の場合は大丈夫です。私はあまり気にしたくありません。 – deftool
'/ [[:alpha:]] + /'は1つ以上の文字列にマッチする正規表現です。文字列 "23aBcD?e"では、例えば、 "aBcD"と "e"とが一致する。正規表現はオブジェクトなので、変数に代入することができます(ここでは 'r =/[[:alpha:]] + /')。したがって、 'gsub(r)'は 'gsub(/ [[:alpha:]] + /)'と同じです。 'gsub(r){| s | s.capitalize} 'は、[String#gsub](http://ruby-doc.org/core-2.2.0/String.html#method-i-gsub)の形式を使用して正規表現にマッチする各文字列を渡します。ブロックとブロック変数(ここでは 's')を一致した文字列に設定します。ブロックによって計算された値は 's'の置換値です。 –
- 1. パラメータが空白で区切られたRubyメソッドを呼び出す
- 2. 空白で区切られたConcat値のJQueryの方法
- 3. 空白で区切られた英数字の一致
- 4. 空白で区切られた異なるデータ型の入力
- 5. fread segfaultと30GBの空白で区切られたファイル
- 6. 空白で区切られた、または区切られた可能性のあるファイルを読み取る
- 7. 空白で区切られたファイルを開く
- 8. Rubyで区切られた解析パイプ
- 9. IntelliJコードスタイルのみが空白で区切られます
- 10. アルファベットの空白またはコンマで区切られたトークンのリスト
- 11. は、それが唯一の最初の空白で区切られた値
- 12. 空白で区切られたフィールドを他のコンマ区切りフィールドで取得する(ループ?)
- 13. 空白で区切られた数字の行末までのマッチング方法は?
- 14. 空白で区切られた文字列をPHPで空白で解析するには?
- 15. 空白で区切られたスペースを含む名前/値のペアの解析
- 16. (C++)空白で区切られた文字列内の別々の数字
- 17. カンマで区切られたリストが空白(空白)かどうかをチェックするときのエラー
- 18. 複数の空白と文字で区切られた文字列
- 19. VB.NET空白で区切られた列と9列目の値が必要
- 20. 空白で区切られた1-2文字の連続したセットを削除する正規表現
- 21. AS3 - 空白とハッシュで区切られた単語を検索する
- 22. 空白で区切られた単語を削除する正規表現コード?
- 23. 空白で区切られた文字列をリストにコピーする
- 24. コンマで区切っても空白のままにしたい
- 25. RubyまたはROR - '||'で区切られた関数の引数
- 26. インライン要素のFirefoxのワード区切り
- 27. カンマ区切りの関数パラメータから白い空白を削除します。
- 28. 文字列を空白で区切り、エスケープされた空白を無視する
- 29. Python:データが2つの空白で区切られている場合に単一のスペースを無視する
- 30. 空白で区切られた1行単位のファイルからの整数の読み込み
こんにちは@deftool! [コードブロックをフォーマットする](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)して、ユーザーがコードをより効率的に読めるようにしてください。 )! –
訂正ありがとうございます。私はまだこれらすべてのものを学ぶことを試みています。 – deftool