文字列が"1234223"
あり、値が整数/数値かどうかを確認したい。
どうすれば1行でそれを行うことができますか?
私が試してみました
1 =~ /^\d+$/
=> nil
"1a" =~ /^\d+$/
=> nil
両方の行が nil を返しています
文字列が"1234223"
あり、値が整数/数値かどうかを確認したい。
どうすれば1行でそれを行うことができますか?
私が試してみました
1 =~ /^\d+$/
=> nil
"1a" =~ /^\d+$/
=> nil
両方の行が nil を返しています
元の投稿と同様のセマンティクスを維持しようとしている場合は、次のいずれかを使用します。
"1234223" =~ /\A\d+\z/ ? true : false
#=> true
!!("1234223" =~ /\A\d+\z/)
#=> true
Ruby 2.4 の新しいRegexp#match を使用した、より慣用的な構造? ブール値の結果を返すメソッドも同じことを行いますが、見た目も少しすっきりしています。例えば:
"1234223".match? /\A\d+\z/
#=> true
どうInteger("123") rescue nil
ですか?
使用できますregex
"123".match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
もチェックしdecimals
ます。
"1234223".tap{|s| break s.empty? || s =~ /\D/}.!