मुझे पहले ही मिल गया है मेरा लक्ष्य केवल उन स्ट्रिंग भागों के लिए सभी लाइन ब्रेक निकालना है जो भीतर <p> टैग हैं।

उदाहरण स्ट्रिंग:

var str = `<h1>Headline do not touch me, nor the line break</h1>

<p>This is 
a test string, please 
put me on one line.</p>`;

बन जाना चाहिए:

var str = `<h1>Headline do not touch me, nor the line break</h1>

<p>This is a test string, please put me on one line.</p>`;

इसे प्राप्त करने के लिए जेएस कोड/रेगेक्स क्या होगा?


नोट: उत्पादन में मेरे तार में कई पी टैग हैं।

मैंने इसे किसी अन्य वेबसाइट पर पाया लेकिन तदनुसार इसे संशोधित करने में सक्षम नहीं हूं: str=str.replace(/(<[^>]+>)/g,function(w){return w.replace(/(\r\n|[\r\n])/g,' ')});

1
Avatar 16 जुलाई 2019, 14:20

2 जवाब

सबसे बढ़िया उत्तर

आप दो रेगेक्स का उपयोग कर सकते हैं एक टैग के अंदर नई लाइन को बदलने के लिए और दूसरा टैग के बीच निकालने के लिए

  1. <[^>]+>[\s\S]+?<\/[^>]+> --> to remove new line inside tags

enter image description here

  1. (<\/[^>]+>)\n+(?=<[^>]+>) --> to remove new line between tags

enter image description here

let str = `<h1>Headline
One Do not touch</h1>



<p>
This is 
a test string, please 
put me on one line.
</p>

<p>

some text
</p>
`

let output = str.replace(/<[^>]+>[\s\S]+?<\/[^>]+>/g, m => m.replace(/\n+/g, ''))

let final = output.replace(/(<\/[^>]+>)\n+(?=<[^>]+>)/g,'$1\n')
console.log(final)
0
Code Maniac 16 जुलाई 2019, 14:54

यदि आपके स्ट्रिंग में केवल एक p टैग है तो नीचे दिया गया कोड काम करता है।

var str = `<h1>Headline do not touch me, nor the line break</h1>

<p>
This is 
a test string, please 
put me on one line.
</p>`;

var str = str.substring(0, str.indexOf('<p>')) + str.slice(str.indexOf('<p>'), str.indexOf('</p>')).replace(/(\r\n|[\r\n])/g,' ') + str.substring(str.indexOf('</p>'), str.length);
0
Manoj hebbani 16 जुलाई 2019, 14:43