जावास्क्रिप्ट का उपयोग करके स्ट्रिंग से रिक्त स्थान कैसे निकालें?


552

स्ट्रिंग में रिक्त स्थान कैसे निकालें? उदाहरण के लिए:

इनपुट:

'/var/www/site/Brand new document.docx'

आउटपुट:

'/var/www/site/Brandnewdocument.docx'

मेरा समाधान" ahm ed ".split('').filter(e => e.trim().length).join('')
UA_

जवाबों:


1223

इस?

str = str.replace(/\s/g, '');

उदाहरण

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );


अपडेट: इस सवाल के आधार पर , यह:

str = str.replace(/\s+/g, '');

एक बेहतर उपाय है। यह एक ही परिणाम पैदा करता है, लेकिन यह तेजी से करता है।

रेगेक्स

\s"व्हाट्सएप" के लिए रेगेक्स है, और g"ग्लोबल" ध्वज है, जिसका अर्थ है सभी से मेल खाता है\s (व्हाट्सएप) से ।

के लिए एक महान स्पष्टीकरण यहाँ+ पाया जा सकता है

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


@ गौरव मैंने एसओ पर इसी तरह के जवाब देखे हैं, और मैं .replace(/\s+/g, '')अक्सर देखता हूं । क्या मेरे और मेरे उत्तर में कोई अंतर है?
17इमे विद्या

इस मामले में कोई अंतर नहीं है। लेकिन + का उपयोग कम से कम एक घटना के साथ खोजने के लिए किया जाता है।
गौरव

1
मूर्खतापूर्ण मुझे, मैं इस धारणा के तहत था कि .replace(' ','')काम करेगा। बहुत सराहना की!
एंडी मर्सर

3
मूल उत्तर (जिसमें सिमे अपने संपादन में जुड़ा हुआ है) +में केवल 60 वोट हैं अगर कोई भी उसे क्रेडिट करना चाहता है / उसे बहुत अधिक stackoverflow.com/a/5964427/4258817
माउस

2
सावधान रहें कि गलती से अपने रेगेक्स को उद्धृत न करें, .replace('/\s+/g', '')क्योंकि यह उस शाब्दिक स्ट्रिंग को खोजने की कोशिश करेगा। इसने मुझे पहले फंसा दिया ...
RTF

75

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

ऐसा करने के दो तरीके!


4
मुझे विभाजन पसंद है () और ज्वाइन ()।
एरिक मिलियट-मार्टिनेज

2
स्प्लिट ('') और ज्वाइन नहीं हटाएंगे \ n, \ t व्हाइट स्पेस चार्ट, दूसरा वर्कअर्स a.split ('') है। मैप (c => c.trim ())। जॉइन ('')
rab

36

SHORTEST और सबसे तेज :str.replace(/ /g, '');


बेंचमार्क:

यहां मेरे परिणाम - (2018.07.13) MacOs हाई सिएरा 10.13.3 क्रोम पर 67.0.3396 (64-बिट), सफारी 11.0.3 (13604.5.6), फ़ायरफ़ॉक्स 59.0.2 (64-बिट):

छोटे तार

ओपी प्रश्न से उदाहरण के समान लघु स्ट्रिंग

यहाँ छवि विवरण दर्ज करें

सभी ब्राउज़रों पर सबसे तेज़ समाधान है / /g(regexp1a) - क्रोम 17.7M (ऑपरेशन / सेकंड), सफारी 10.1M, फ़ायरफ़ॉक्स 8.8M। सभी ब्राउज़रों के लिए सबसे धीमा split-joinसमाधान था । प्रसंस्करण को धीमा करने \sया फिर से जोड़ने +या बदलने के लिए बदलें i

लम्बी तार

स्ट्रिंग के बारे में ~ 3 सैन्य चरित्र परिणाम हैं:

  • regexp1a : Safari 50.14 ops / sec, Firefox 18.57, Chrome 8.95
  • regexp2b : Safari 38.39, Firefox 19.45, Chrome 9.26
  • स्प्लिट-जॉइन : फ़ायरफ़ॉक्स 26.41, सफारी 23.10, क्रोम 7.98,

आप इसे अपनी मशीन पर चला सकते हैं: https://jsperf.com/remove-string-spaces/1


1
दिलचस्प बात यह है कि स्प्लिट-जॉइन विधि अब फ़ायरफ़ॉक्स 73 पर मेरे लिए सबसे तेज़ है, इसके बाद 53% धीमी गति से regexp1a है।
प्रातः

25

@Rsplak उत्तर के बाद: वास्तव में, विभाजन / जुड़ने का तरीका regexp का उपयोग करने की तुलना में तेज़ है। प्रदर्शन परीक्षण का मामला देखें

इसलिए

var result = text.split(' ').join('')

से अधिक तेजी से चल रही है

var result = text.replace(/\s+/g, '')

छोटे ग्रंथों पर यह प्रासंगिक नहीं है, लेकिन ऐसे मामलों के लिए जब समय महत्वपूर्ण है, उदाहरण के लिए पाठ विश्लेषकों में, विशेष रूप से उपयोगकर्ताओं के साथ बातचीत करते समय, यह महत्वपूर्ण है।


दूसरी ओर, \s+विभिन्न प्रकार के अंतरिक्ष वर्णों को संभालता है। के साथ \nऔर \t, यह \u00a0चरित्र से भी मेल खाता है, और यही वह है जो  पाठ का उपयोग करते समय प्राप्त होता है textDomNode.nodeValue

इसलिए मुझे लगता है कि यहाँ निष्कर्ष इस प्रकार बनाया जा सकता है: यदि आपको केवल रिक्त स्थान बदलने की आवश्यकता है ' ', विभाजन / शामिल होने का उपयोग करें। यदि प्रतीक वर्ग के विभिन्न प्रतीक हो सकते हैं - उपयोगreplace(/\s+/g, '')


1
यह बहुत ज्यादा नहीं है way faster । परीक्षण चलाया और यह केवल 2.19% तेज है, मेरे फ़ायरफ़ॉक्स 61 पर।
vsync


2
  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

नोट: यद्यपि आप रिक्त स्थान को हटाने के लिए 'g' या 'gi' का उपयोग करते हैं, दोनों समान व्यवहार करते हैं।

यदि हम प्रतिस्थापित फ़ंक्शन में 'g' का उपयोग करते हैं, तो यह सटीक मिलान के लिए जाँच करेगा। लेकिन अगर हम 'gi' का उपयोग करते हैं, तो यह केस सेंसिटिविटी को नजरअंदाज कर देता है।

संदर्भ के लिए यहां क्लिक करें


0

रेगेक्स + रिप्लेसमेंट ()

यद्यपि रेगेक्स धीमा हो सकता है, कई उपयोग के मामलों में डेवलपर केवल कुछ तारों में हेरफेर कर रहा है, इसलिए गति पर विचार करना अप्रासंगिक है। भले ही / \ / s / से तेज़ है, '' s 'बताता है कि किसी अन्य डेवलपर के लिए क्या चल रहा है और अधिक स्पष्ट रूप से।

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'

विभाजन () + शामिल हों ()

स्प्लिट + जॉइन का उपयोग करके स्ट्रिंग के आगे जंजीर हेरफेर के लिए अनुमति देता है।

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.