初めに
初学者です。rubyの練習問題を自分なりに解説して定着することが目的です。もし間違いなどありましたらご指摘お願いします。
問題
名前を入力する機能を作成しましょう。
名前以外にピリオド(.)や空白があるとエラーを表示させます。
include?メソッドを使用して下さい。
出力例:
登録したい名前を入力してください(例)YamadaTaro
YamadaTaro → 登録が完了しました
Yamada.Taro→!エラー!記号は登録できません
Yamada Taro → !エラー!空白は登録できません
ではまず用語の解説から行います。
include?メソッド
include?メソッドとは指定した要素が配列や文字列に含まれているかを判定するメソッドのこと。指定した文字列が要素に含まれていればtrue、なければfalseを返します。
書き方としては
オブジェクト名.include?("検索する文字列")
また配列の中身を検索することもできます。
注意としては?がつかないだけで全く別のメソッドになるので必ず?を忘れないようにしてください。さらに詳しいことは公式を参照してください。
公式
解答
ではまず名前を入力してもらう記述から書いていきます。ここの説明は割愛します。
puts "登録したい名前を入力してください"
str = gets
check_name(str)
では名前を入力してもらう記述がかけたので問題文の条件にあったメソッドを作っていきます。入力した内容をメソッドに引数として渡します。
def check_name(str)
end
puts "登録したい名前を入力してください(例)YamadaTaro"
str = gets
check_name(str)
そして渡した引数にピリオドや空白がないか検索してあればエラー文を表示させます。検索には先ほど説明したinclude?メソッドを使用します。
さらに今回は出力した内容に対して3つの分岐があります。条件分岐はif文を使用します。3つの分岐があるのでif→elsif→else と分岐させていきます。
def check_name(str)
if str.include?(".")
puts "!エラー!記号は登録できません"
elsif str.include?(" ")
puts "!エラー!空白は登録できません"
else
puts "登録が完了しました"
end
end
puts "登録したい名前を入力してください(例)YamadaTaro"
str = gets
check_name(str)
ピリオドは"."
空白は" "と表しています。以上です。