slice , slice!について

sliceメソッド

文字列、配列に対して使用することで、任意の文字列や配列の要素を取り出すことができます。

irb
> x = "hogefoobar"
> x.slice(3)
=> "e"            #<= 引数のindexは0から始まるので注意!!

> x.slice(10)
=> nil            # <= 無い場合はnilを返す
 
> x.slice(5, 3)
=> "oob"          # <= 第2引数を指定すると、第一引数から何文字を取り出すかを指定できる。

> x.slice(2..-1)
=> "gefoobar"     # <= rangeでの指定も可能

又、文字列に対しても配列と同様に[ ]を使用できます。

irb

> x = "hogefoobar"
> x[4,7]
=> "foobar"

x[4..7]
=> "foob"

slice!メソッド

slice!は与えられたオブジェクトから返したオブジェクトを取り除きます。

irb

> x = ("a".."g").to_a
> p x
=> ["a", "b", "c", "d", "e", "f", "g"]

#sliceの場合
> x.slice(2..5)
=> ["c", "d", "e", "f"]
> p x
=> ["a", "b", "c", "d", "e", "f", "g"]  # <=変わらない!!

#slice!の場合
> x.slice!(2..5)
=> ["c", "d", "e", "f"]
> p x
=> ["a", "b", "g"]  # <= 取り除かれる!!