खैर, यहाँ एक आसान तरीका है:
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