関数 が必要です。is_an_integer
ここで
"12".is_an_integer?
true を返します。"blah".is_an_integer?
false を返します。
これを Ruby で実行するにはどうすればよいですか? 正規表現を記述しますが、私が知らないヘルパーがあると思います。
ベストアンサー1
さて、簡単な方法は次のとおりです。
class String
def is_integer?
self.to_i.to_s == self
end
end
>> "12".is_integer?
=> true
>> "blah".is_integer?
=> false
文字列を変換するために例外を発生させるソリューションには同意しません。例外は制御フローではないので、正しい方法で実行したほうがよいでしょう。とはいえ、上記のソリューションは 10 進数以外の整数には対応していません。そこで、例外に頼らずに行う方法は次のとおりです。
class String
def integer?
[ # In descending order of likeliness:
/^[-+]?[1-9]([0-9]*)?$/, # decimal
/^0[0-7]+$/, # octal
/^0x[0-9A-Fa-f]+$/, # hexadecimal
/^0b[01]+$/ # binary
].each do |match_pattern|
return true if self =~ match_pattern
end
return false
end
end