0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby11

Last updated at Posted at 2023-02-01

概要

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

問題

以下の要件を満たす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メソッドを用いて記述する。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?