How do I limit the number of replacements when using gsub? में, किसी ने सीमित संख्या में प्रतिस्थापन करने का निम्न तरीका सुझाया:ब्लॉक को कितनी बार बुलाया जाता है, मैं कैसे सीमित करूं?
str = 'aaaaaaaaaa'
count = 5
p str.gsub(/a/){if count.zero? then $& else count -= 1; 'x' end}
# => "xxxxxaaaaa"
यह काम करता है, लेकिन कोड प्रतिस्थापन (5) को प्रतिस्थापित करने के लिए कितनी बार प्रतिस्थापन (5) "अगर कोई प्रतिस्थापन होना चाहिए, तो $&
अन्यथा)। क्या दोनों को अलग करना संभव है?
(यदि इस परिदृश्य में दो चीजों को अलग करना बहुत मुश्किल है, लेकिन यह किसी अन्य परिदृश्य में किया जा सकता है, इसे उत्तर के रूप में पोस्ट करें)
मुझे लगता है कि में दिलचस्पी थी। मैंने 'MatchData # start',' MatchData # length', 'MatchData # end', 'स्ट्रिंग # मिलान (regex, position)', या किसी भी तरह' gsub' के साथ '/ \ G /' का उपयोग करने का उपयोग करने के बारे में सोचा था, लेकिन पूरी तरह से काम नहीं किया। शायद कोई इस लाइन के साथ, या एक पूरी तरह से अलग परिप्रेक्ष्य के साथ एक विचार विस्तृत कर सकते हैं। उत्तर के लिए आगे देख रहे हैं। – sawa