Techioz Blog

ダッシュの後の最初の文字を大文字にする

概要

したがって、不適切な形式の名前である文字列が得られました。 「ジャン=ポール・ベルトー=アラン」としましょう。

Rubyで正規表現を使用して、すべてのダッシュの後の最初の文字を検索し、それを大文字にしたいと考えています。したがって、この場合は、「Jean-Paul Bertaud-Alain」を生成するメソッドを適用したいと思います。

何か助けはありますか?

解決策

String#gsub はブロック引数を取ることができるため、これは次のように簡単です。

str = "Jean-paul Bertaud-alain"
str.gsub(/-[a-z]/) {|s| s.upcase }
# => "Jean-Paul Bertaud-Alain"

または、より簡潔に言うと、次のようになります。

str.gsub(/-[a-z]/, &:upcase)

正規表現 /-[a-z]/ は、a ~ z の範囲の文字にのみ一致することに注意してください。つまり、一致しないことを意味します。ああ。これは、大文字化が言語に依存するため (たとえば、トルコ語では i の大文字化が英語とは異なるため)、String#upcase は発音記号を使用して文字を大文字化しようとしないためです。詳細については、この回答をお読みください: https://stackoverflow.com/a/4418681