概要
対象の文字列の中に特定の値が含まれているかどうかを検知するプログラムを実装します。
問題
以下の要件を満たすcheck_nameメソッドを実装しましょう。
・名前を入力すると「登録が完了しました」という文字列を出力すること
・名前の中にピリオド(.)がある場合は、「 "!エラー!記号は登録できません"」という文字列を出力すること
・名前の中に空白(半角のみ)がある場合は、「 "!エラー!空白は登録できません"」という文字列を出力すること
※今回空白に関しては、半角スペースのみを考えることとします。
def check_name(str)
# 処理を記述
end
puts "登録したい名前を入力してください(例)YamadaTaro"
str = gets
check_name(str)
YamadaTaro → 登録が完了しました
Yamada.Taro→!エラー!記号は登録できません
Yamada Taro → !エラー!空白は登録できません
💡ヒント💡
include?メソッド
include?メソッドは、指定した値が配列や文字列内に含まれているかを判定するメソッドです。指定した値が含まれている場合はtrueを、含まれていない場合はfalseを返り値として返します。
array = ["foo", "bar"]
puts array.include?("bar")
# => true
puts array.include?("hoge")
# => 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メソッドを定義しています。
12行目
その定義したcheck_nameメソッドを呼び出しています。
この際、引数にはgetsメソッドで入力された文字列を渡しています。
2行目から8行目にわたるif文による条件分岐では、1行目の仮引数strで受け取った文字列に対してinclude?メソッドを使用し、”.”(ピリオド)と” ”(半角スペース)がないかを順に判断しています。
注意点として、if文は条件が当てはまった時点で処理が終了します。
そのため、「ピリオドや空白があるかどうか」という条件式を先に記述すること。
※if文を使用する時は処理したい順序を考えてから記述することが大切です。
出力例を参考にそれぞれの場合で出力させる値を、putsメソッドを用いて記述する。