रूबी में एक चरित्र में # घटनाओं का पता लगाना


103

मैं रूबी विधि (1.9 ...) की तलाश कर रहा हूं जो मुझे एक स्ट्रिंग में एक चरित्र की घटनाओं की संख्या का पता लगाने में मदद कर सकता है। मैं सभी घटनाओं की तलाश कर रहा हूं, न कि केवल पहली घटना।

उदाहरण के लिए: "मेलानी एक नोब है" अक्षर 'ए' की दो घटनाएं हैं। इसे खोजने के लिए मैं रूबी विधि का क्या उपयोग कर सकता हूं?

मैं एक संदर्भ के रूप में Ruby-doc.org का उपयोग कर रहा हूं और मेरी आंख scanको String: classपकड़ा हुआ है। शब्द समझना मेरे लिए थोड़ा मुश्किल है, इसलिए मैं वास्तव में इस अवधारणा को समझ नहीं पाया scan

संपादित करें: मैं इसका उपयोग करके हल करने में सक्षम था scanमैंने एक वीडियो में साझा किया कि मैंने इसे कैसे हासिल किया।


2
क्या आप स्ट्रिंग में आवृत्तियों की संख्या या अनुक्रमणिका मान चाहते हैं? यह जानना कि कितने अक्सर उपयोगी होते हैं, लेकिन आमतौर पर अगला सवाल "वे कहां हैं?"
टिन मैन

जवाबों:


142

यदि आप सिर्फ एक की संख्या चाहते हैं:

puts "Melanie is a noob".count('a')  #=> 2

अधिक विवरण के लिए डॉक्स


18
मुझे वास्तव में यह उत्तर पसंद आया जब तक कि मैंने यह नहीं देखा कि आपने प्रश्न से स्ट्रिंग लिया है :-) फिर भी +1।
हुब्रो

यह डॉट्स के साथ काम क्यों नहीं करता है? उदाहरण "voyage.localhost.com" .count ('www।') => 2. यह कैसे हो सकता है?
गिडमिनस

12
@ गिद्दीनों ने वर्णों को countगिना, तार नहीं। "voyage.localhost.com" .count ( 'www।') के रूप में "voyage.localhost.com" .count एक ही है और के बाद से वहाँ w के और दो डॉट्स नहीं कर रहे हैं परिणाम 2. है ( 'डब्ल्यू।')
steenslag

2
कोई भी मौका जो आप डॉक्स के लिए लिंक जोड़ सकते हैं ?
निधि मोनिका का मुकदमा

2
मैं शुरू में इस जवाब से काफी सदमे में था, फिर मैंने देखा कि मेलानी ने पहले उदाहरण का इस्तेमाल किया। अच्छा उत्तर!
AJFaraday

52

पहले से पूछे गए एक प्रश्न का यह लिंक रूबी में एक स्ट्रिंग को स्कैन करने में मदद करना चाहिए

स्कैन एक स्ट्रिंग में स्ट्रिंग के सभी घटनाओं को एक सरणी के रूप में देता है, इसलिए

"Melanie is a noob".scan(/a/)

वापस होगा

["a","a"]

1
यह वह उत्तर है जिसकी मुझे तलाश थी :)
Zippie

3
scanसरल स्ट्रिंग्स के साथ भी काम करता है, इसलिए scan('a')इसका उपयोग भी किया जा सकता है
डैनियल रिकोस्की

1

मैं एक स्ट्रिंग को पास करके इसे हल करने में सक्षम था scanजैसा कि दूसरे उत्तर में दिखाया गया है।

उदाहरण के लिए:

string = 'This is an example'
puts string.count('e')

आउटपुट:

2

मैं regex के बजाय स्कैन का उपयोग करके और स्टिंग पास करके घटनाओं को खींचने में सक्षम था, जो कि दूसरे उत्तर से थोड़ा भिन्न होता है, लेकिन regex से बचने के लिए सहायक था।

string = 'This is an example'
puts string.scan('e')

आउटपुट:

['e','e']

मैंने इन विधियों को एक छोटे से वीडियो गाइड में खोजा, जिसे मैंने इसे बनाने के बाद बनाया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.