किसी दिए गए html स्ट्रिंग से सफेद रिक्त स्थान के प्रमुख और अनुगामी कैसे निकालें?


178

मैं निम्नलिखित HTML स्ट्रिंग है। इस स्ट्रिंग से सफेद रिक्त स्थान की अग्रणी और अनुगामी हटाने के लिए जावास्क्रिप्ट में नमूना कोड क्या होगा?

<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Trimming using JavaScript<br />
<br />
<br />
<br />
all leading and trailing white spaces
<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>


आपकी असली समस्या क्या है? क्या आप दस्तावेज़ में नोड्स डालने से पहले व्हाट्सएप को हटाना चाहते हैं?
रॉब डब्ल्यू

मैं सभी प्रमुख सफेद स्थानों के साथ-साथ सभी सफेद स्थानों को पीछे हटाना चाहता हूं। बहुत सी # में ट्रिम विधि की तरह मेरे अलावा कि यह भी सफेद रिक्त स्थान को निकालता है।
सुनील

इसलिए मेरे उदाहरण में, मुझे अंत में ट्रिमिंग के बाद निम्नलिखित प्राप्त करना चाहिए: जावास्क्रिप्ट का उपयोग करके ट्रिमिंग <br /> <br /> <br /> सभी सफेद रिक्त स्थान
सुनील

@ सुनील मुझे नहीं पता कि क्या आपने कभी इसे हल किया है, लेकिन आप इनमें से कोई एक समाधान आजमा सकते हैं: stackoverflow.com/questions/16708158/…
क्रिस बेकर

जवाबों:


245

स्ट्रिंग विधि देखें trim()- https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

var myString = '  bunch    of <br> string data with<p>trailing</p> and leading space   ';
myString = myString.trim();
// or myString = String.trim(myString);

संपादित करें

जैसा कि अन्य टिप्पणियों में कहा गया है, रेगेक्स दृष्टिकोण का उपयोग करना संभव है। trimविधि प्रभावी ढंग से सिर्फ एक regex के लिए एक उपनाम है:

if(!String.prototype.trim) {  
  String.prototype.trim = function () {  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
} 

... यह उन ब्राउज़रों के लिए मूल प्रोटोटाइप में विधि को इंजेक्ट करेगा जो अभी भी पूल के उथले छोर में तैर रहे हैं।


3
मैं एक regex तरीका पसंद करेंगे, क्योंकि यह सभी ब्राउज़रों में समर्थित नहीं है ( खांसी खांसी IE <9)।
PeeHaa

2
ट्रिम विधि सफेद रिक्त स्थान को ट्रिम नहीं करेगी, लेकिन केवल रिक्त स्थान। तो यह नहीं कि मैं क्या देख रहा हूँ।
सुनील

8
मुझे यकीन नहीं है कि आप क्या सोचते हैं "सफेद स्थान" हैं, लेकिन ट्रिम सामान्य रूप से व्हाट्सएप को हटा देगा (न्यूलाइन, स्पेस, टैब आदि), न केवल अंतरिक्ष चरित्र।
bsa

2
@bsa मुझे समझ में आया कि वह "सफ़ेद स्थान" का अर्थ दृश्य अर्थ में है, जैसा कि "HTML को प्रस्तुत करने के परिणामों में दृष्टिगत रूप से रिक्त क्षेत्र", और फिर उन्होंने "ऊपर की टिप्पणी में जोड़ा" को छोड़कर br"टैग के कारण हुई नई कहानियों को छोड़कर "।
क्रिस बेकर

2
170 अपवोट के साथ उत्तर पर चेक मार्क क्यों नहीं है? SO मुझे कभी-कभी भ्रमित करता है।
tcoulson

63
var str = "  my awesome string   "
str.trim();    

पुराने ब्राउज़रों के लिए, रेगेक्स का उपयोग करें

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 

2
"[]" बिल्कुल "" के समान है। वास्तव में एक चरित्र का एक समूह समूहीकरण है .. ठीक है ... बिल्कुल एक चरित्र।
फ्लिम्जी

2
@ फैली: हाँ, यह लिखने के लिए [\t\n\ ]या अधिक समझ में आता है जिसके \sबजाय [ ]कोई मतलब नहीं है।
एरिक

11
string.replace(/^\s+|\s+$/g, "");

प्रश्न पढ़ें, &nbsp;एक सामान्य व्हाट्सएप के बजाय प्रयोग किया जाता है। इसके शीर्ष पर, व्हाट्सएप एक टैग के भीतर समाहित है।
रॉब डब्ल्यू

6

यदि आप एक मल्टीलाइन स्ट्रिंग के साथ काम कर रहे हैं, तो कोड फ़ाइल की तरह:

<html>
    <title>test</title>
    <body>
        <h1>test</h1>
    </body>
</html>

और इस परिणाम को प्राप्त करने के लिए सभी प्रमुख लाइनों को बदलना चाहते हैं:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>

आपको multilineअपने regex में ध्वज जोड़ना होगा , ^और $पंक्ति से रेखा का मिलान करना होगा :

string.replace(/^\s+|\s+$/gm, '');

डॉक्स से प्रासंगिक बोली :

"एम" ध्वज इंगित करता है कि मल्टीलाइन इनपुट स्ट्रिंग को कई लाइनों के रूप में माना जाना चाहिए। उदाहरण के लिए, यदि "m" का उपयोग किया जाता है, तो "^" और "$" केवल स्ट्रिंग के भीतर किसी भी लाइन के प्रारंभ या अंत में पूरे स्ट्रिंग के प्रारंभ या अंत में मिलान से बदलते हैं।


4

मुझे पता है कि यह एक बहुत पुराना प्रश्न है, लेकिन इसका अभी भी एक स्वीकृत उत्तर नहीं है। मैं देखता हूं कि आप निम्नलिखित हटाना चाहते हैं: html टैग जो "रिक्त" हैं और एक HTML स्ट्रिंग पर आधारित सफेद रिक्त स्थान हैं।

मैं आपके द्वारा खोजे जा रहे आउटपुट के लिए आपकी टिप्पणी के आधार पर एक समाधान लेकर आया हूं:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>";
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim() प्रमुख और अनुगामी व्हाट्सएप को हटाता है

.replace(/&nbsp;/g, '') हटा देगा &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); खाली टैग निकालता है


3
var trim = your_string.replace(/^\s+|\s+$/g, '');

1
क्या यह <br /> या <p> & nbsp; & nbsp; </ p> <div> & nbsp; </ div> जैसे सफेद रिक्त स्थान को हटा देगा? सरल रिक्त स्थान को ट्रिम करना कोई समस्या नहीं है। इसके सफेद स्थान को हटाने के बाद जो मैं हूं।
सुनील

क्या यह सफेद स्थान को हटा देगा
user2086641

3

01)। यदि आपको केवल सफेद जगह का उपयोग करने के लिए अग्रणी और पीछे हटाने की आवश्यकता है:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

यह स्ट्रिंग "No.255 कोलंबो" लौटेगा

02)। यदि आपको इसका उपयोग करने के लिए सभी सफेद स्थान को हटाने की आवश्यकता है:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

यह स्ट्रिंग "No.255Colombo" लौटाएगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.