お題
ローカル変数 str
に文字列が代入されているとして,先頭から高々 10 文字までを puts
で表示してください。
「高々 10 文字」というのは,str
が 10 文字に満たないときはすべて表示する,という意味です。
次に,高々 n
文字までを同様に表示してください(n
は正の整数とする)。
話を簡単にするため str
は改行を含まないと仮定します。
コード
puts str[0..9]
puts str[0..(n - 1)]
改善
10 文字表示させたいのに,配列式の終端に 10
ではなく 9
を指定しなければならない,というのは混乱の元ですね。
変数で与えたときも余計な計算式が必要になって面倒です。
こういう書き方はバグを誘う悪い習慣です。
あるいは ..
の代わりに ...
を使って
puts str[0...10]
puts str[0...n]
と書くこともできますが,もっと素直なのは
puts str[0, 10]
puts str[0, n]
でしょう。
String に対する [ ]
で,引数1として整数を二個与えたときは,第一引数が開始インデックス,第二引数が長さです。
String#[] は多様な使い方ができるメソッドなので,ぜひリンク先の公式リファレンスをご覧ください。
-
[ ]
はメソッドであり,その中に書くのはこのメソッドに対する実引数です。 ↩