※本投稿のコメントにも有用なコメントをいくつか頂きましたので、そちらも合わせてご確認ください。
Rubyである文字列が正の整数かどうか判定する方法を調べていたところ、なかなか出てこなくて苦労したので、ここにメモしておきます。参考になったらうれしいです。
私は、ある文字列(ここではinputとします)が整数かどうか判別して、整数の場合はその文字列をto_iで数値化し使用、整数以外である場合は、エラーを出すというプログラムを書こうと思っておりました。(gets.chompで取得した文字列をinputに代入していました。)
integer? →失敗
input.integer?
文字列に対して使えるメソッドではないので、あっさり失敗。
to_iとinteger?ではどうだ! →失敗
input.to_i.integer?
ならば、inputを数値化して、整数かどうか判定すればいいのでは?と思いついたものの、to_iがimputを強制的に整数にしてしまい、失敗。
Integer()ならいけるでしょ →失敗
Integer(input)
inputが整数でないときに、エラーが出てしまい、どうすればいいのかわからず断念。
正規表現という手法があった! →成功
input =~ /^[0-9]+$/
これでうまくいきました。
意味合いとしては、
//:挟まれたところが正規表現
^:始まりの言葉
[0-9]:0から9までの数字
+:を1回以上繰り返す
$:終わりの言葉
ということらしいです。正規表現はサルでもわかるようなので、詳しくはこちらのサイトを参考にしてください。
以上です。
※他にもこんな方法があるよ!などあればコメントいただけると幸いです。