LoginSignup
0
0

More than 1 year has passed since last update.

本日の基礎練習問題①(22/3/23)

Posted at

問題
以下の要件を満たすxyz_thereメソッドを実装しましょう。
任意の文字列から連続する文字列"xyz"を探し、その直前にピリオド(.)がない場合はTrueを出力する
任意の文字列から連続する文字列"xyz"を探し、その直前にピリオド(.)がある場合はFalseを出力する
上記2つの条件に当てはまらない場合はFalseを出力する

雛形.
def xyz_there(str)
  # 処理を記述
end

# 呼び出し例
xyz_there('abcxyz')

出力例
xyz_there('abcxyz') → True
xyz_there('abc.xyz') → False
xyz_there('xyz.abc') → True
xyz_there('azbycx') → False
xyz_there('a.zbycx') → False

私の回答

ruby.
def xyz_there(str) 
  if str.include?(".xyz")
    puts "False"
  elsif str.include?("xyz")
    puts "True"
  else
    puts "False"
  end
end

# 呼び出し例
xyz_there('abcxyz')

解説

まずif文でinclude?メソッドを使い".xyz"がstrに含まれているかどうか判断します。
次に"xyz"を同じように判断します。
判断する順番に気をつけて処理を記述しました。

模範回答

ruby.
def xyz_there(str) 
  if str.include?(".xyz")
    puts "False"
  elsif str.include?("xyz")
    puts "True"
  else
    puts "False"
  end
end

# 呼び出し例
xyz_there('abcxyz')

模範解説

include?を用いて、対象となる文字列が含まれているかどうかを、各条件式で判別しています。
ポイントとしては、str.include?(".xyz")の条件式をstr.include?("xyz")より前に設置することです。
例えば"abc.xyz"という文字列の場合は、str.include?("xyz")においてもtrueとなってしまうため、先に".xyz"を含むかどうかを判別する必要があります。

感じたこと

今回使用したinclude?メソッドは一度学習したことがあったので覚えていた。
文字列判断の順番で処理結果がおかしくなるので、if文設定の場合はしっかりと順番を考えて記述していきたい。

アドバイスやご指摘等ございましたらぜひお願いします!!

以上

0
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
0
0