表題の通りsliceメソッドについてアウトプットします。
sliceメソッドとは
配列や文字列から指定した要素を取り出すことができる。
使い方いろいろ
その1 (1つ指定して取り出す)
array = [0,1,2,3,4,5,6]
result = array.slice(1)
puts result
#=> 1
# 配列自体は変わらない
puts array
#=> [0,1,2,3,4,5,6]
その2-1 (複数の要素を取り出す)
複数の要素を取り出すこともできる。
下記は「ここから○つ分を取り出す」方法。
array = [0,1,2,3,4,5,6]
# 配列番号1から4つ分の要素をsliceする
result = array.slice(1,4)
puts result
#=> 1 2 3 4
この方法を使って下記のようなこともできる。
# 任意の文字列の最後の2文字を3回繰り返して出力するメソッドを作る
def extra_end(str)
num = str.length
right2 = str.slice(num - 2, 2)
puts right2 * 3
end
extra_end(str)
str.length
で文字列の文字数を取得。
文字列も配列と同じで先頭は0から数えていくので、
文字列の最後の文字を取得するならstr.slice(num - 1)
となる。
今回は文字列の最後の2文字を取得したいので、str.slice(num - 2, 2)
にする。
その2-2
複数の要素を取り出す方法には他に、
「配列番号○から配列番号Xまでを指定して取り出す」方法もある。
array = [0,1,2,3,4,5,6]
# 配列番号1から4までの要素をsliceする
result = array.slice(1..4)
puts result
#=> 1 2 3 4
こんなこともできる。
# 要素を定義
array = "string"
# 配列番号の-3から-1の範囲の文字列を切り取る
result = array.slice(-3..-1)
puts result
#=> "ing"
一番右側が-1で、右から左に-1,-2,-3...と配列番号を数える。
その3 slice!
sliceの後ろに!を付けると元の配列や文字列を変化させることができる。
(破壊的メソッド)
string = "abcde"
result = string.slice!(2)
puts result
#=> "c"
# "c"が取り除かれている
puts string
#=> "abde"