LoginSignup
0
0

More than 1 year has passed since last update.

Ruby 問題14 特定の文字列を検知する include?メソッド

Posted at

問題

以下の要件を満たすcheck_nameメソッドを実装して下さい。

  • 名前を入力すると「登録が完了!」という文字列を出力すること
  • 名前の中にピリオド(.)がある場合は、「 "記号は登録できません"」という文字列を出力すること
  • 名前の中に空白(全角のみ)がある場合は、「 "全角空白は登録できません"」という文字列を出力すること
def check_name(str) 
  # 処理
end

puts "登録したい名前を入力してください(例)SuzukiTaro"
str = gets
check_name(str) 

ヒント

include?メソッド
include?メソッドは、指定した値が配列や文字列内に含まれているかを判定するメソッドです。指定した値が含まれている場合はtrueを、含まれていない場合はfalseを返り値として返します。

公式リファレンス

解答

def check_name(str) 
  if str.include?(".")
    puts "記号は登録できません"
  elsif str.include?(" ")
    puts "全角空白は登録できません"
  else
    puts "登録が完了しました"
  end
end

puts "登録したい名前を入力してください(例)SuzukiTaro"
str = gets
check_name(str) 

check_name(str) の引数に自身が入力した名前が渡されます。

ピリオド(.)や全角スペースがあった場合はエラー文を出し、正しく記入されていれば登録できましたと出るような記述をしたいのでifで条件分岐を記述します。

def check_name(str) 
  if #条件式
    puts "記号は登録できません"
  elsif #条件式
    puts "全角空白は登録できません"
  else #条件式
    puts "登録が完了しました"
  end
end

条件が当てはまった時点で処理が終了するので先にエラーが出る場合の条件式を記述します。

  • ピリオド(.)がある場合
 if str.include?(".")
    puts "記号は登録できません"

言葉で表すとピリオドがあった文章はtrueなので記号は登録できませんと返ってきます。
ピリオドがなかったらelseifの条件式へ移ります.

  • 空白(全角のみ)がある場合
elsif str.include?(" ")
    puts "全角空白は登録できません"

全角空白があった文章はtrueなので全角空白は登録できませんと出力されます。
ピリオドも空白全角もなかったら全てを通り抜けて登録が完了しました返ってきます。

ちなみに半角であれば登録はできます。

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