sliceメソッドとは?
sliceメソッドとは、文字列の中から引数で指定した条件の文字を抜き出すメソッド。
# 例:文字列 "Hello world" の頭から2文字目の "e" を抜き出す
string = "Hello world"
string.slice(1) #=> "e"
# 引数に該当する文字が見つからなければnilを返す
string.slice(11) #=> nil
sliceメソッドの使い方
sliceメソッドは引数に、抜き出す文字の条件指定する。
引数の指定は以下の様な方法がある。
文字列の先頭 or 後ろから何文字目かを指定
文字列の先頭から何文字目かを指定する。番号は0から始まるのに注意(先頭の文字が0、先頭から2番目が1)
string = "Hello world"
# 先頭から何文字目かを指定、先頭の番号は0
string.slice(0) #=> "H"
string.slice(1) #=> "e"
string.slice(2) #=> "l"
string.slice(3) #=> "l"
string.slice(4) #=> "o"
マイナスの値を指定することで、後ろから何文字目かを指定することもできる。その場合、一番後ろの文字が-1、後ろから2番目が-2のように数えられる。
string = "Hello world"
# 後ろから何文字目かを指定、一番後ろの番号は-1
string.slice(-5) #=> "w"
string.slice(-4) #=> "o"
string.slice(-3) #=> "r"
string.slice(-2) #=> "l"
string.slice(-1) #=> "d"
文字列の先頭 or 後ろから何番目かと、そこから何文字かを指定
文字列の中の範囲を指定して文字を抽出する。始まりの位置と、そこから何文字抽出するかを指定する。この場合も、番号は0から始まる。
string = "Hello world"
# 先頭(0番目)から5文字抽出
string.slice(0,5) #=> "Hello"
# 6番目から5文字抽出
string.slice(6,5) #=> "world"
始まりの位置にマイナスの値を指定することで、後ろから何文字目かを指定することもできる。この場合も一番後ろの文字が-1、後ろから2番目が-2のように数えられる。
string = "Hello world"
# -11番目から5文字抽出
string.slice(-11,5) #=> "Hello"
# -5番目から5文字抽出
string.slice(-5,5) #=> "world"
抽出したい文字を直接指定
特定の文字を指定して抽出する。
string = "Hello world"
# "H"を指定
string.slice("H") #=> "H"
# "Hello"を指定
string.slice("Hello") #=> "Hello"
# 含まれていない文字を指定するとnilを返す
string.slice("hello") #=> nil
正規表現で指定
抽出したい文字を正規表現で指定する。
string = "Hello world"
# 正規表現で「wから始まってdで終わる文字」を指定
string.slice(/w.*d/) #=> "world"
範囲演算子で範囲を指定
範囲演算子( .. , ... )を使って文字列内の範囲を指定し、文字を抽出する。この場合も、番号は0から始まる。
string = "Hello world"
# 先頭(0番目)から4番目まで抽出
string.slice(0..4) #=> "Hello"
# ...にすると範囲の終わりの文字を含まない
string.slice(0...4) #=> "Hell"
sliceメソッドとslice!メソッドの違い
slice!というメソッドもあるが、こちらもsliceメソッドと同じように文字列の中から文字を抽出して返すメソッドである。引数の指定方法もsliceメソッドと同じ。ただし、slice!メソッドを使うと、抽出した文字は元の文字列から取り除かれる。
string = "Hello world"
# sliceメソッドを使用しても元のstringは変わらない
string.slice(0..4) #=> "Hello"
string #=> "Hello world"
# slice!メソッドを使用すると元のstringから文字列が取り除かれる
string.slice!(0..4) #=> "Hello"
string #=> " world"
まとめ
- sliceメソッドは文字列から文字を抽出するメソッド
- 引数に指定した条件で文字を抽出する
- 引数は文字の順番や正規表現、範囲で指定できる
- slice!メソッドは元の文字列から文字を取り除く