前提・実現したいこと
paizaラーニングの練習問題「日付のフォーマット」を解いています。
・"YYYY/MM/DD"の形式の10文字からなる
・YYYYは4つの数字からなる
・MMは2つの数字からなり、"01"から"12"の12種類のいずれかである
・DDは2つの数字からなり、"01"から"31"の31種類のいずれかである
上の条件を満たす場合に「Yes」/そうでなければ「No」を出力します。
・入力されるのは半角英数字と"/"のみ
・入力される文字列は20文字以内
発生している問題・エラーメッセージ
「aaaa/bb/cc」と「2018/09/21」など、文字列の場合と数字の場合の区別ができない
該当のソースコード
Ruby
1#標準入力で文字列を取得 2s = gets 3#取得した文字列を”/”で文字列の要素に分割 4t = s.split("/") 5 6year = t[0] 7month =t[1] 8day = t[2] 9 10if t.count==3 && #”/”で区切られる要素数が3つの場合 11 year.length ==4 && month.length == 2 && day.length ==2 && #要素の文字数指定 12 year.to_i<=9999 && day.to_i <=12 && day.to_i <=31 #要素の最大値指定 13 #ここでabcdなどの文字列も数字に変換してしまっているので、もともとが数字なのか文字列なのか区別がつかない 14 puts "Yes" 15else 16 puts "No" 17end
試したこと
list = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
list.any?{|str| ymd.include?(str)}
元の文字列が一文字じゃないので、include?では検出できなかったです
補足情報(FW/ツールのバージョンなど)
使えそうなメソッドがあるか、そもそも考え方の方向性が間違っているのか、なにかヒントをいただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/19 15:13