2011-05-15 18 views
6

रूबी में स्ट्रिंग # gsub द्वारा किए गए प्रतिस्थापन की संख्या को आप कैसे सीमित करते हैं?gsub का उपयोग करते समय मैं प्रतिस्थापन की संख्या को कैसे सीमित करूं?

PHP में यह preg_replace के साथ आसान किया जा सकता है जो प्रतिस्थापन सीमित करने के लिए पैरामीटर लेता है, लेकिन मैं यह नहीं समझ सकता कि रूबी में यह कैसे किया जाए।

उत्तर

3

gsub सभी अवसरों को प्रतिस्थापित करता है।

आप स्ट्रिंग # उप कोशिश कर सकते हैं

http://ruby-doc.org/core/classes/String.html#M001185

+0

अरे! मैंने कुछ और खोजने के लिए स्ट्रिंग फ़ंक्शंस को देखा, फिर मैंने एसएस क्यों नहीं देखा ?? धन्यवाद! –

4

आपको लगता है कि एक gsub पाश के भीतर एक काउंटर और घटती बना सकते हैं।

str = 'aaaaaaaaaa' 
count = 5 
p str.gsub(/a/){if count.zero? then $& else count -= 1; 'x' end} 
# => "xxxxxaaaaa" 
+0

काम करता है, लेकिन यह बदसूरत है। क्या कोई बेहतर तरीका नहीं है? –

3
str = 'aaaaaaaaaa' 
# The following is so that the variable new_string exists in this scope, 
# not just within the block 
new_string = str 
5.times do 
    new_string = new_string.sub('a', 'x') 
end 
+2

मैं देखता हूं। यह अच्छा है। लेकिन, जब प्रतिस्थापन स्ट्रिंग regex से मेल खाता है, उदाहरण के लिए 'उप ('ए', 'बिल्ली') ', आपको रेगेक्स को संशोधित करने की आवश्यकता है, उदाहरण के लिए,' उप (/ \ Ga /, 'cat')'। या, क्या यह सही है? – sawa

+0

@sawa: अच्छा बिंदु! –

+0

दरअसल, '\ G'' sub' के लिए काम नहीं कर रहा था। यह हर बार रीसेट हो जाता है। – sawa

संबंधित मुद्दे