要素を置き換える

広告

配列に含まれる要素を置き換えるには次のように行います。

Arrayオブジェクト[index] = 新しい要素

上記は1つの要素を置き換えるものですが、他にも複数の要素をまとめて置き換えることが出来ます。

開始インデックスと終了インデックスを指定して新しい値で置き換える

指定した開始インデックスと終了インデックスまでの要素を新しい値に置き換えるには次の構文を使います。

Arrayオブジェクト[start..end] = 新しい要素

「start」に指定したインデックスから「end」に指定したインデックスまでの要素を新しい要素で置換します。新しい要素としては配列を指定したり単独の値を指定が可能です。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1..2] = ["osaka", "nagoya"]

上記の場合は対象の配列の1番目から2番目の要素を、2つの新しい要素を持つ配列で置き換えています。結果は次のようになります。

ary = ["東京", "osaka", "nagoya", "福岡", "札幌"]

次に置換対象の要素数と置換する要素の数が異なる場合です。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1..2] = ["osaka", "nagoya", "yokohama"]

上記の場合は対象の配列の1番目から2番目の要素を、3つの新しい要素を持つ配列で置き換えています。結果は次のようになります。

ary = ["東京", "osaka", "nagoya", "yokohama", "福岡", "札幌"]

単独の値で置き換えることも可能です。その中でも置き換える値として「nil」を指定した場合にはその要素は削除されます。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1..2] = nil

上記の場合は対象の配列の1番目から2番目の要素を「nil」で置き換えています。結果は次のようになります。

ary = ["東京", "福岡", "札幌"]

サンプルプログラム

次の例を試して下さい。

LibraryArray8.rb

#! ruby -Ks

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]

print("元の配列:¥n")
ary.each do |youso|
  print(youso, "¥n")
end

ary[1..2] = ["osaka", "nagoya", "yokohama"]

print("1番から2番を3つの要素で置き換え:¥n")
ary.each do |youso|
  print(youso, "¥n")
end

ary[1..3] = nil

print("1番から3番をnilで置き換え:¥n")
ary.each do |youso|
  print(youso, "¥n")
end

実行結果は次のようになります。

複数の要素を新しい値で置き換え

開始インデックスと要素数を指定して新しい値で置き換える

指定した開始インデックスと要素数を指定して新しい値に置き換えるには次の構文を使います。

Arrayオブジェクト[start, len] = 新しい要素

「start」に指定したインデックスから「len」要素数分の要素を新しい要素で置換します。新しい要素としては配列を指定したり単独の値を指定が可能です。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1, 2] = ["osaka", "nagoya"]

上記の場合は対象の配列の1番目から2つ分の要素を、2つの新しい要素を持つ配列で置き換えています。結果は次のようになります。

ary = ["東京", "osaka", "nagoya", "福岡", "札幌"]

次に置換対象の要素数と置換する要素の数が異なる場合です。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1, 2] = ["osaka", "nagoya", "yokohama"]

上記の場合は対象の配列の1番目から2つ分の要素を、3つの新しい要素を持つ配列で置き換えています。結果は次のようになります。

ary = ["東京", "osaka", "nagoya", "yokohama", "福岡", "札幌"]

単独の値で置き換えることも可能です。その中でも置き換える値として「nil」を指定した場合にはその要素は削除されます。

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]
ary[1, 2] = nil

上記の場合は対象の配列の1番目から2つ分の要素を「nil」で置き換えています。結果は次のようになります。

ary = ["東京", "福岡", "札幌"]

サンプルプログラム

実際に試してみます。

LibraryArray9.rb

#! ruby -Ks

ary = ["東京", "大阪", "名古屋", "福岡", "札幌"]

print("元の配列:¥n")
ary.each do |youso|
  print(youso, "¥n")
end

ary[1, 3] = ["横浜", "神戸"]

print("1番から3つの要素を2つの要素で置き換え:¥n")
ary.each do |youso|
  print(youso, "¥n")
end

実行結果は次のようになります。

複数の要素を新しい値で置き換え

( Written by Tatsuo Ikura )