LoginSignup
0
2

More than 3 years have passed since last update.

任意の文字列を部分的に削除するプログラムの実装

Posted at

概要

対象となる文字列から任意の文字を削除したのち、残った文字列を出力するプログラムを実装。次の要件を満たすmissing_charメソッドを実装。

対象となる文字列からn番目の文字を削除すること
削除された文字以外の文字列を出力すること

雛形

def missing_char(str, n)
  # 処理を記述
end


# 呼び出し例(1つ目の引数には対象となる文字列を、2つ目の引数には対象となる文字列から何番目の文字を削除するのかを指定しましょう)
missing_char('kitten', 1)
出力例:
missing_char('kitten', 1)  'itten'
missing_char('kitten', 2)  'ktten'
missing_char('kitten', 4)  'kiten'

slice!メソッド

slice!メソッドは、配列や文字列から指定した要素を削除し、削除した後の要素を返すメソッドです。末尾にエクスクラメーションマーク(!)のつくメソッドを破壊的メソッドといいます。これはもとの配列や文字列を変化させるメソッドです。

string = "abcdefg"
string.slice!(2)

puts string
#=> "abdefg"
# 2番目の要素のcが取り除かれている
def missing_char(str, n)
  str.slice!(n - 1)
  puts str
end

# 呼び出し例
missing_char('kitten', 1)

missing_charメソッドの引数strには対象となる文字列、nは何番目の文字を消すのか指示する数字を入れる仕様。

def missing_char(str, n)

例えば、呼び出し元がmissing_char('kitten', 1)であれば、1行目のmissing_charメソッドの仮引数strには'kitten'が入り、nには1が入るということです。

そして、2行目のslice!メソッドの引数には、nから1を引いた数を設定しています。
なぜ1を引くのかというと、文字列の順番を指定する際も、配列と同じように先頭の文字列
は0からカウントされるためです。
よって、下記のように記述することで、nから1を引いた数字に該当する文字列をstrから削除することができます。

str.slice!(n - 1)
0
2
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
0
2