Ruby を使用して文字列が基本的に引用符で囲まれた整数であるかどうかをテストする方法 質問する

Ruby を使用して文字列が基本的に引用符で囲まれた整数であるかどうかをテストする方法 質問する

関数 が必要です。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

おすすめ記事