hibikousinnkibouのブログ

駆け出しプログラマーによる足跡ブログ

文字列から一部を取り出し繰り返す方法 (slice メソッド)

今回は "Hello" から最後の "lo" を取り出して、3回繰り返す(正解は lololo )方法を

def extra_end(str)
  # 処理を記述
end

# 呼び出し例
extra_end('Hello') 

の形で行う。

String#slice! (Ruby 3.1 リファレンスマニュアル)

上記の公式サイトから正規表現が利用できることを確認し、

def extra_end(str)
repeat = str.slice(/..\z/)
3.times do
puts repeat
end
end

と記述した。

これだと lo が3回出るが、改行されてしまう。 repeat.chomp にしても改善されず、諦めた。

模範回答は

def extra_end(str)
  right2 = str.slice(- 2, 2)
  puts right2 * 3
end

とのことで、そんなんで良いんかい的な拍子抜けでした。

ちなみに私の回答も

def extra_end(str)
repeat = str.slice(/..\z/)
puts repeat * 3
end

にすると、 lo は改行されず、 lololo と横並びになった。