この記事は何
shellgei160を通じて言語習得 Advent Calendar 2023に参加しています。
書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。
例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160
実行環境など
- Docker image: ruby:3.0.2
- 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に
answer-ruby
ディレクトリを作り、その中に解答となるファイルを作成していきます。
今回のテーマ
小問が2個あります。
小問1$ echo I am a perfect human | (read a; echo ${a^^})
小問2$ echo pen-pineapple-apple-pen | (IFS=-; read -a w; echo "${w[*]^}")
1.は文字を全て大文字(^^
)に、2.は半角ハイフン区切りで単語を読み出して、単語の先頭だけ大文字に変更します。
解
15_1.rb
raw = 'I am a perfect human.'
puts raw.upcase
15_2.rb
raw = 'pen-pineapple-apple-pen'
puts raw.split('-').map(&:capitalize).join(' ')
所感
- 2.は、言語によってはタイトルケースに変換する関数が標準ライブラリに含まれるが、Rubyには無さそう? 単語ごとに
capitalize
しておく。