/ / पूर्ण रूपांतरण पूर्णांक करने के लिए स्ट्रिंग - रूबी

स्पष्ट रूपांतरण पूर्णांक करने के लिए स्ट्रिंग - रूबी

मेरे पास कोड का निम्न टुकड़ा है:

gets().to_i

जब मैं इनपुट करता हूं "A", "a", "world", या कुछ भी और इसे एक पूर्णांक में परिवर्तित करने के लिए परिवर्तित करें to_i, मुझे मिला 0 लौटा हुआ। क्या कोई यहां बता सकता है कि यहां क्या हो रहा है और मैं क्यों देख रहा हूं 0 हमेशा?

उत्तर:

जवाब के लिए 2 № 1

ऐसा इसलिए है क्योंकि एक स्ट्रिंग पूर्णांक रिटर्न में परिवर्तित हो जाती है 0 या स्ट्रिंग अंकों के साथ शुरू होने पर एक पूर्णांक।

➜  ~  irb
2.1.5 :001 > "whatever".to_i
=> 0
2.1.5 :002 > "12-whatever".to_i
=> 12
2.1.5 :003 > "whatever-12".to_i
=> 0

जैसा कि आप कन्वर्ट करने की कोशिश कर रहे हैं A, a, world पूर्णांक (जो समझ में नहीं आता है), आपको मिल जाएगा 0.

पूर्णांक में डालने की कोशिश करने से पहले, आपको यह जांचना चाहिए कि इनपुट एक पूर्णांक है या नहीं। आप या तो नियमित अभिव्यक्ति का उपयोग कर सकते हैं, या Integer विधि अगर इनपुट एक पूर्णांक नहीं है तो उठाएगा।

2.1.5 :004 > Integer(12)
=> 12
2.1.5 :005 > Integer("world")
ArgumentError: invalid value for Integer(): "world"
from (irb):5:in `Integer"
from (irb):5
from /Users/weppos/.rvm/rubies/ruby-2.1.5/bin/irb:11:in `<main>"
2.1.5 :006 > Integer("12-world")
ArgumentError: invalid value for Integer(): "12-world"
from (irb):6:in `Integer"
from (irb):6
from /Users/weppos/.rvm/rubies/ruby-2.1.5/bin/irb:11:in `<main>"

उत्तर № 2 के लिए 1

The आधिकारिक दस्तावेज इस पर अच्छी तरह से लिखा है ।


जवाब के लिए 0 № 3

वास्तव में, क्या आप का वर्णन reproduced नहीं किया जा सकता है । विशेष उदाहरण आप दिया के सभी में, String#to_i वास्तव में रिटर्न 0, लेकिन इसका मतलब यह नहीं है कि यह रिटर्न 0 किसी भी स्ट्रिंग के लिए । पहले to_i यदि स्ट्रिंग की शुरुआत एक पूर्णांक के रूप में समझा जा सकता है देखता है ।यदि ऐसा है, तो वह पूर्णांक लौटाता है. यदि नहीं, तो यह रिटर्न 0.