LoginSignup
2
0

More than 1 year has passed since last update.

【Ruby】特定の文字列を検知 check_nameメソッド

Posted at

※初心者向け
※アウトプット練習の為

開発環境
rails 6.0.4.4
ruby 2.6.5

概要

対象の文字列の中に特定の値が含まれているかどうかを検知するプログラムを実装。

問題内容

以下の要件を満たすcheck_nameメソッドを実装しましょう。

・名前を入力すると「登録が完了しました」という文字列を出力すること
・名前の中にピリオド(.)がある場合は、「 "!エラー!記号は登録できません"」という文字列を出力すること
・名前の中に空白(半角のみ)がある場合は、「 "!エラー!空白は登録できません"」という文字列を出力すること
※今回空白に関しては、半角スペースのみを考えることとします。

雛形

def check_name(str) 
  # 処理を記述
end

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

出力例
YamadaTaro → 登録が完了しました
Yamada.Taro→!エラー!記号は登録できません
Yamada Taro → !エラー!空白は登録できません

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

解答内容

def check_name(str) 
  if str.include?(".")
    puts "!エラー!記号は登録できません"
  elsif str.include?(" ")
    puts "!エラー!空白は登録できません"
  else
    puts "登録が完了しました"
  end
end
puts "登録したい名前を入力してください(例)YamadaTaro"
str = gets
check_name(str) 

解説
1行目から9行目でcheck_nameメソッドを定義し、その定義したcheck_nameメソッドを13行目で呼び出しています。この際、引数にはgetsメソッドで入力された文字列を渡しています。

check_nameメソッドでは、「ピリオドや空白(半角スペース)がない場合は登録を行い、ピリオドや空白がある場合はエラーを出す」という条件分岐を行うためにif文を使用しています。
2行目から8行目にわたるif文による条件分岐では、1行目の仮引数strで受け取った文字列に対してinclude?メソッドを使用し、 ”.”(ピリオド)” ”(半角スペース)がないかを判断しています。

注意点として、if文は条件が当てはまった時点で処理が終了します。
そのため、「ピリオドや空白があるかどうか」という条件式を先に記述しましょう。

そして、出力例を参考にそれぞれの場合で出力させる値を、putsメソッドを用いて記述しましょう。

これで、コードは完成です。

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