2011-08-15 11 views

उत्तर

6

gsub दस्तावेज़ देखें: | मैच

str.gsub (पैटर्न) {| ब्लॉक} → new_str

ब्लॉक फॉर्म में, वर्तमान मिलान स्ट्रिंग पैरामीटर के रूप में पारित की जाती है, और चर $ 1, $ 2, $ `, $ &, और $ 'उचित रूप से सेट की जाएगी। ब्लॉक द्वारा लौटाया गया मूल्य प्रत्येक कॉल पर मैच के लिए प्रतिस्थापित किया जाएगा।

"a lower upper b".gsub(/(lower) (upper)/){|s| $1 + " " + $2.upcase}

+0

धन्यवाद, कि मैं वास्तव में क्या ढूंढ रहा था। –

2

gsub एक ब्लॉक तर्क लेता है, जो प्रत्येक मैच के लिए चलाया जाता है, मैच में पैरामीटर के रूप में गुजरता है - इस प्रकार आप जो भी चाहें कर सकते हैं! उदाहरण के लिए, एक स्ट्रिंग में हर शब्द को कैपिटल के लिए:

"ruby blocks are pretty awesome".gsub(/\w+/) do |match| 
    match.capitalize 
end 
#=> "Ruby Blocks Are Pretty Awesome" 
2

मैं रूबी के लिए एक नौसिखिया हूँ - बस इसे का उपयोग शुरू किया कुछ दिन पहले, लेकिन शायद यह काम करेगा? आप चर बोक में $n नामित के रूप में backreferences प्राप्त करने में सक्षम हो जाएगा:

new_text = text.gsub(/(lower) (upper)/){ 
    "#{$1} #{$2.upcase}" 
} 

अद्यतन
ऐसा लगता है कि ब्रैंडन के बारे में 8 मिनट से यह करने के लिए मुझे हरा :) यह काफी एक ही बात है AFAIK

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