Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी के gets और chomp में महारत: उपयोगकर्ता इनपुट को प्रभावी ढंग से पढ़ना

आप एक रूबी प्रोग्राम लिख रहे हैं और आप उपयोगकर्ता से एक प्रश्न पूछना चाहते हैं…

आप यह कैसे कर सकते हैं?

खैर, आप उपयोगकर्ता इनपुट को पढ़ने के लिए रूबी gets मेथड का उपयोग कर सकते हैं।

आप gets को कॉल कर सकते हैं।

फिर आपका प्रोग्राम आपके कीबोर्ड से कुछ टाइप करने और एंटर कुंजी दबाने का इंतजार करना शुरू कर देता है।

परिणाम?

आपको एक स्ट्रिंग वापस मिलती है।

इस स्ट्रिंग में वह सामग्री होती है जो आपने (या उपयोगकर्ता ने) टाइप की थी, इसलिए यदि आप इस स्ट्रिंग को एक वेरिएबल में असाइन करते हैं तो आप इसका उपयोग कर सकेंगे।

एक सामान्य उदाहरण एक ग्रीटिंग प्रोग्राम है।

यह ऐसा दिखता है:

 name = gets.chomp puts "Hello #{name}, nice to meet you!" 

#{name} चीज़ को स्ट्रिंग इंटरपोलेशन कहा जाता है

इसे आज़माएं और देखें कि यह कैसे काम करता है।

  • पहले, इस कोड को "greeting.rb" फाइल में सेव करें
  • फिर, टर्मिनल प्रोग्राम से "ruby greeting.rb" के साथ इसका उपयोग करें

अपना नाम दर्ज करें और आपका प्रोग्राम आपका अभिवादन करेगा!

बहुत बढ़िया।

अब:

यह chomp व्यवसाय क्या है?

यह एक रूबी मेथड है जो gets के परिणामों को एक बहुत ही विशिष्ट तरीके से बदलता है।

इसे हटाने का प्रयास करें।

इससे पहले डॉट (.) को शामिल करते हुए, ताकि यह name = gets बन जाए, name = gets.chomp के बजाय।

यदि आप अपना कोड सेव करते हैं और इसे फिर से चलाते हैं…

आप देखेंगे कि आपका अभिवादन अब एक लाइन के बजाय दो लाइनों में टूट गया है।

इसके साथ क्या हो रहा है?

आइए विवरण में जाकर पता लगाएं!

न्यूलाइन्स और विशेष वर्णों को समझना

रूबी get मेथड सक्रिय होने पर आपके द्वारा प्रोग्राम में टाइप की गई हर चीज़ को पढ़ता है।

हमारे ग्रीटिंग प्रोग्राम के लिए, इसमें आपका नाम शामिल है।

और एक विशेष "नई लाइन" वर्ण जो अभिवादन संदेश को दो लाइनों में तोड़ देता है!

नई लाइन वर्ण से मिलें:

 \n 

इस प्रकार के विशेष वर्ण सामान्यतः अदृश्य होते हैं और केवल नई लाइनों, रिक्त स्थान, रंगों आदि के रूप में दिखाई देते हैं।

यदि आप उन्हें देखना चाहते हैं तो आपको $10,000 कीमत वाली मैजिक फ्लैशलाइट की आवश्यकता होगी।

सिर्फ मजाक कर रहा हूँ!

आपको केवल p मेथड या inspect मेथड की आवश्यकता है।

उदाहरण उपयोग:

 p name # "Jesus\n" 

वहाँ है!

हमारा "नई लाइन" वर्ण (\n)।

यह हमें हमारे मूल प्रश्न पर वापस लाता है…

chomp क्या है?

chomp का उद्देश्य स्ट्रिंग के अंत में न्यूलाइन वर्ण को हटाना है।

जैसा कि आपने देखा, यह बहुत मददगार है!

एक और उदाहरण

इस न्यूलाइन वर्ण, या किसी अन्य विशेष वर्ण का होना, केवल यह प्रभावित नहीं करता कि प्रिंट करते समय स्ट्रिंग कैसी दिखती है।

यह आपके if स्टेटमेंट्स पर भी प्रभाव डाल सकता है!

उदाहरण:

 name = gets if name == "David" puts "Hello David, we were expecting you!" end 

इस कोड में, यदि आप gets के साथ chomp का उपयोग नहीं करते हैं, तो न्यूलाइन वर्ण (\n) के कारण दोनों स्ट्रिंग्स समान नहीं होंगी, इसलिए इसका मूल्यांकन false होगा।

बात दें…

यह gets के बाहर से प्राप्त स्ट्रिंग्स पर भी लागू होता है, जैसे डेटाबेस, फ़ाइल, या किसी अन्य स्रोत से प्राप्त डेटा।

इन विशेष वर्णों पर नज़र रखें!

Chomp बनाम Chop बनाम Strip

उपयोगकर्ता इनपुट को साफ करने के लिए आपको दो अन्य मेथड्स chop और strip उपयोगी लग सकते हैं।

strip के साथ आप व्हाइट स्पेस हटा सकते हैं।

उदाहरण:

 " John Smith ".strip 

chop के साथ आप हमेशा अंतिम वर्ण को हटा देंगे।

पहला वर्ण हटाना

एक और चीज़ जिसकी आपको आवश्यकता हो सकती है वह है शुरुआत से वर्णों को हटाना।

आप इसे इस तरह कर सकते हैं:

 str = "Mr. John" str[0..3] = "" str # "John" 

यह पहले चार वर्णों को हटा देता है।

दो Gets मेथड्स? प्लॉट गाढ़ा होता है!

एक विशेष मामला है…

जहां आपको केवल gets के बजाय $stdin.gets का उपयोग करना होगा।

यदि आपको इस तरह की त्रुटि मिलती है:

 `gets': No such file or directory @ rb_sysopen 

क्यों?

क्योंकि gets मेथड के दो संस्करण हैं।

  • डिफ़ॉल्ट संस्करण फ़ाइल नाम पढ़ने का प्रयास करता है
  • वैकल्पिक संस्करण ($stdin.gets) हमेशा उपयोगकर्ता इनपुट से पढ़ता है

अब आप जानते हैं, यदि आप gets का उपयोग करते समय ऐसी त्रुटि देखते हैं, तो इसे $stdin.gets में बदलने का प्रयास करें।

सारांश

आपने gets और chomp मेथड्स के बारे में सीखा, वे क्या करते हैं, कैसे काम करते हैं, और वे उपयोगी क्यों हैं!

इस रूबी ट्यूटोरियल के साथ सीखते रहें।

पढ़ने के लिए धन्यवाद! 🙂

  1. Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड

    Map एक Ruby मेथड है जिसका उपयोग आप Arrays, Hashes और Ranges के साथ कर सकते हैं। map का मुख्य उपयोग डेटा को ट्रांसफॉर्म करना है। उदाहरण के लिए: स्ट्रिंग्स की एक सरणी दिए जाने पर, आप हर स्ट्रिंग पर जा सकते हैं और हर कैरेक्टर को UPPERCASE बना सकते हैं। या यदि आपके पास User ऑब्जेक्ट्स की एक सूची है... आ

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।

  1. रूबी एरे में महारत: व्यावहारिक उदाहरण और आवश्यक मेथड्स रूबी एरे में महारत: व्यावहारिक उदाहरण और आवश्यक मेथड्स

    एरे क्या है? एक एरे रूबी में एक बिल्ट-इन क्लास है, जो शून्य या अधिक आइटम्स की सूची रखती है, और इसमें ऐसे मेथड्स शामिल हैं जो आपको इन सभी आइटम्स को आसानी से जोड़ने, एक्सेस करने और लूप करने में मदद करते हैं। यह उपयोगी है, क्योंकि यदि एरे मौजूद नहीं होते तो आपको कई वेरिएबल्स का उपयोग करना पड़ता। उदाहरण