3

文字列が"1234223"あり、値が整数/数値かどうかを確認したい。

どうすれば1行でそれを行うことができますか?

私が試してみました

1 =~ /^\d+$/ 
 => nil

"1a" =~ /^\d+$/
 => nil

両方の行が nil を返しています

4

4 に答える 4

19

元の投稿と同様のセマンティクスを維持しようとしている場合は、次のいずれかを使用します。

"1234223" =~ /\A\d+\z/ ? true : false
#=> true

!!("1234223" =~ /\A\d+\z/)
#=> true

Ruby 2.4 の新しいRegexp#match を使用した、より慣用的な構造? ブール値の結果を返すメソッドも同じことを行いますが、見た目も少しすっきりしています。例えば:

"1234223".match? /\A\d+\z/
#=> true
于 2013-09-17T09:24:12.340 に答える
16

どうInteger("123") rescue nilですか?

于 2013-09-17T11:24:46.667 に答える
2

使用できますregex

"123".match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true

もチェックしdecimalsます。

于 2013-09-17T09:25:07.327 に答える
1
"1234223".tap{|s| break s.empty? || s =~ /\D/}.!
于 2013-09-17T09:30:47.460 に答える