目次(まとめ)

◾️ deleteメソッドを使って、Rubyで定義した配列内の要素を削除する

◾️ 関連記事

こんにちは、みっちゃんです。

Rubyを使ってプログラミングしているんだけど、与えられた配列の中で削除したい要素があります。どうやったら削除することができますか?

配列内の要素の削除は、"delete" メソッドを使用することで可能です。

今回の記事では、テキストファイルを読み込んで、読み込んだ情報を使って配列を作り、その配列の中にある要素を削除する方法を紹介します。

deleteメソッドを使って、Rubyで定義した配列内の要素を削除する

ここでは、以下のようなテキストファイル(input.txt)をRubyで読み込むことを考えます。

apple
grape
orange
banana
meron

これを読み込んで配列変数 "array" に保存するためのRubyのスクリプトは、以下のような例(sample-1.rb)になります。

# sample-1.rb

infile = open("input.txt", "r")   # テキストファイル "input.txt" を、読み込み (read) モードで開いています

array = Array.new()   # 配列変数 "array" の初期化

while line = infile.gets   # 読み込みモードで開いたファイルを、1行ずつ読み込んでいく繰り返し文です
  array << line.chomp   # 改行コードを削除して、"array" に保存
end   # 繰り返しはここまで

infile.close   # 開いていたファイルを閉じる

puts array

これをターミナル上などで実行すると、以下のように出力されます(初心者の方で実行方法がわからない方は、こちらの記事をご参照ください)。

$ ruby sample-1.rb
apple
grape
orange
banana
meron

次に、"array" 変数内の "apple" を削除して、出力してみます。

Rubyでは、"delete" メソッドを使うことで配列内の要素(ここでは "apple")を削除することが可能です。

# sample-2.rb

infile = open("input.txt", "r")

array = Array.new()

while line = infile.gets
  array << line.chomp
end

infile.close

array.delete("apple")   # ここで、"array" 変数から "apple" を削除
puts array

以前の記事でも紹介したように、Rubyには、"破壊的メソッド" と "非破壊的メソッド" の2種類が準備されていますが、"delete" メソッドにはその区別がありません。

上のように実行すると、"array" 変数の内容が置き換わります。

実行すると、以下のようになります。

$ ruby sample-2.rb
grape
orange
banana
meron

関連記事