2009-12-24 16 views
5

मैं एक बार दोहराना संख्याजावास्क्रिप्ट RegExp का उपयोग करते हुए एक बार दोहराना संख्या

उदा के साथ अपने स्ट्रिंग में खाली लाइनों बदलना चाहते हैं के साथ प्रत्येक मैच को बदलने के लिए की जगह

स्ट्रिंग:

साथ

"My first line 

My second line 

My third line" 

" 
1 

My first line 

2 

My second line 

3 

My third line" 

मैं मेल खाते हैं और

var newstring = TestVar.replace (/(^|\n\n)/g, "\nhello\n"); 

का उपयोग कर फिर भी मैं एक समारोह है कि जोड़ देगा जोड़ने के लिए संघर्ष कर रहा हूँ इन पंक्तियों की जगह ले सकता प्रत्येक के लिए एक पुनरावृत्ति संख्या।

क्या आप मदद कर सकते हैं?

TIA,

GIDs

+0

प्रत्येक के शुरू में चार रिक्त स्थान के साथ अपने कोड ब्लॉक इंडेंट कृपया लाइन। – Gumbo

+0

हेड-अप के लिए धन्यवाद, यह सुनिश्चित करेगा कि मैं भविष्य में यह – Gids

उत्तर

8

हाँ, आप जावास्क्रिप्ट में कर सकते हैं कि। आपको replace पर दूसरे तर्क के रूप में फ़ंक्शन को पास करने की आवश्यकता है।

var i = 0; 
var newstring = TestVar.replace(/(^|\n\n)/g, function() { return '\n' + (++i) + '\n'; }); 

समारोह वास्तव में आधारित मानकों जिस पर आप तय कर सकते हैं मूल्य आप के साथ बदलना चाहते हैं की एक बहुत कुछ मिलता है, लेकिन हम इस कार्य के लिए उनमें से किसी को जरूरत नहीं है।

हालांकि, यह उनके बारे में पता करने के लिए अच्छा है, MDC एक महान documentation on the topic

+0

ग्रेट में करूँगा, सुपर-तेज़ और सहायक प्रतिक्रिया के लिए बहुत धन्यवाद। – Gids

+0

मैंने सोचा कि यह आईई 6 में काम नहीं करेगा लेकिन वास्तव में यह करता है। आईई 5 आखिरी संस्करण था जो स्ट्रिंग.रेप्लेस में दूसरे पैरामीटर के रूप में फ़ंक्शन का समर्थन नहीं करता था। –

2

है यहाँ एक नियमित अभिव्यक्ति का उपयोग किए बिना एक संस्करण है। आप String की विधि का उपयोग कर सकते हैं, हालांकि स्पष्ट रूप से मैं neater नियमित अभिव्यक्ति संस्करण का उपयोग करता हूं।

var testVar = "My first line\n\nMy second line\n\nMy third line"; 
var lines = testVar.split("\n\n"), newStringParts = []; 
for (var i = 0, len = lines.length; i < len; ++i) { 
    newStringParts.push(i + 1); 
    newStringParts.push(lines[i]); 
} 
alert(newStringParts.join("\n")); 
+1

गैर-रेगेक्स विकल्प को देखना हमेशा अच्छा विचार है –

0

सिर्फ html में नाम के साथ छवि पथ बदलने के लिए मैं sth पसंद आया इस

html='hello <img src="../../../../yahoo/images/icons/common/image_one.png">a<img \ 
src="add.png"> xyz <table><tbody><tr><td>He<img src="document_add.png">loo<img\ 
src="document_add.png"></td></tr></tbody></table><img src="CD_delete.png"><img src="check.png">' 


html.replace(/src="(.*?)"/ig, function($1){return 'src="'+$1.match(/([^\/\\]+)\.(\w+)/)[0]+'"' }); 

व्यवहृत किया जा सकेगा

"hello <img src="image_one.png">a<img src="src="add.png"> xyz <table><tbody><tr><td>He<img src="src="document_add.png">loo<img src="src="document_add.png"></td></tr></tbody></table><img src="src="CD_delete.png"><img src="src="check.png">" 
संबंधित मुद्दे