1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】sliceメソッドで要素の取り出し

Posted at

概要

問題を解きながら slice メソッドを学習することができます。前回の記事では 「sliceメソッドとslice!メソッド」 についてまとめていますのでよろしければ御覧ください。

目次

  • slice

  • 実践

    • 問題
    • 解答(解説)
    • 別解
  • まとめ

  • 参考文献

slice

sliceメソッドを使うことで文字列や配列から指定した要素を取り出すことができます。添字が 0番 からはじまるので考慮して引数を指定します。

array = [0,1,2,3,4,5,6] # 配列を作成

array.slice(1..3) # 配列の1~3番目を取り出し
#=> [1, 2, 3]

array.slice(1, 5) # 配列の1から5個分の要素を取り出し
#=> [1, 2, 3, 4, 5]

実践

問題

文字列の最後の2文字を3回繰り返し、出力するメソッドを作ってください。

解答(解説)

解答
def repeat_char(str)
  char_length = str.length - 2               # 文字列の長さを出し最後から2文字を起点にしたいので-2をしている
  char_slice  = str.slice(char_length, 2)    # 変数char_lengthから2文字取り出し
  p char_slice * 3                           # 3回出力
end

# メソッド呼び出し
repeat_char('apple')
repeat_char('orange')
repeat_char('melon')

# ターミナル出力結果
# "lelele"
# "gegege"
# "ononon"

別解

スタート位置を最後から 2番目 にするために、上記の例だと文字列の長さを取得してから -2 しています。

ここでは slice の第1引数に -2 を指定することで取得しています。

別解
def repeat_char(str)
  char_slice  = str.slice(-2, 2)    # 最後から2番目スタートにしている
  p char_slice * 3
end

# メソッド呼び出し
repeat_char('apple')
repeat_char('orange')
repeat_char('melon')

まとめ

  • 「slice」 は文字列や配列から引数で指定した要素を取り出すことができる
  • 添字が0番からはじまるので取り出し時に注意する
  • 「slice」 の第一引数に -1 を指定することで任意の文字列や配列の「最後を取得」することができる

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?