sliceメソッド
文字列の最後の2文字を3回繰り返して出力させる!
今日はrubyドリルででてきた問題です。
sliceメソッド
配列から指定された要素を返します。指定の要素を切り取る(slice)イメージです。
出力例: extra_end('Hello') → 'lololo' extra_end('ab') → 'ababab' extra_end('Hi') → 'HiHiHi'
こんな感じで最後から2文字目を3回繰り返すということです。
# 配列を作成します array = [0,1,2,3,4,5,6] # 配列から引数で指定した要素をsliceします ele1 = array.slice(1) puts ele1 #=> 1 # 配列番号1から4つ分の要素をsliceします ele2 = array.slice(1,4) puts ele2 #=> 1 2 3 4 # 配列はもとのままです puts array #=> [0,1,2,3,4,5,6]
上記がsliceメソッドを使った例です。
今回は、animals
の最後から2番目の文字を3回繰り返して出力させようと思います。
def extra_end(str) extra_end = str.slice(str.length - 2,2) puts extra_end * 3 end extra_end("animals")
5行目の("animals")
という引数は、1行目の(str)
に置き換えられます。
置き換えると考えやすいです。
def extra_end(animals) #←実際は(str)
2行目の
extra_end = str.slice(str.length - 2,2)
こちらもstr
をanimals
に置き換えて考えてみます。
extra_end = animals.slice(animals.length - 2,2) #animalsは実際はstrです
この
animals.slice
animals
という文字列をスライスしましょう。という事です。
(animals.length -2,2)
.length
は文字の長さを調べるメソッドです。
animals.length -2
で最後の文字から2番目という意味です。
animals
の最後の文字から2番目はls
です。
その次にある2
の意味は先ほど書いた最後から2番目、すなわちanimals
の最後から2番目の、ls
から2文字という事です。
少しわかりにくいので、数値を変えてみます。
extra_end = animals.slice(animals.length - 5,3)
-5,3
に変えて考えていきます。
animals.length -5
で最後の文字から5番目という事なのでimals
という事です。
そして、次に3
ということはimals
の前から3文字目という意味です。
なので、
extra_end = animals.slice(animals.length - 5,3)
はima
を表しています。
それでは先ほどの記述の続きに戻ります。
puts extra_end * 3
このextra_end
にはls
が入っています。
*3
は×3という意味なので出力結果は
lslsls
となります!