जावास्क्रिप्ट में अंडरस्कोर के साथ रिक्त स्थान की जगह?


352

मैं इस कोड को _ के साथ रिक्त स्थान को बदलने के लिए उपयोग करने की कोशिश कर रहा हूं, यह स्ट्रिंग में पहले स्थान के लिए काम करता है, लेकिन रिक्त स्थान के अन्य सभी उदाहरण अपरिवर्तित रहते हैं। किसी को पता है क्यों?

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}

जवाबों:


693

प्रयत्न .replace(/ /g,"_");

संपादित करें : या .split(' ').join('_')यदि आप आरईएस के लिए एक घृणा है

संपादित करें : जॉन रेजिग ने कहा :

यदि आप एक स्थैतिक खोज के साथ एक स्ट्रिंग के माध्यम से खोज और प्रतिस्थापित कर रहे हैं और एक स्थैतिक की जगह यह तेजी से कार्रवाई के साथ .plit ("मैच") करने के लिए है। अधिकांश आधुनिक ब्राउज़रों में यह तरीका है। (फ़ायरफ़ॉक्स के अगले संस्करण में .replace (/ मैच / जी, "बदलें") के प्रदर्शन में व्यापक सुधार लाने के लिए बदलाव किए जा रहे हैं - इसलिए पिछला बयान लंबे समय तक नहीं रहेगा।)


1
क्या रीजेक्सपी के बिना ऐसा करने का कोई तरीका है?
क्लिक करें

14
.Split ('') .join ('_')
क्रिसेंट फ्रेश

7
/ /gउपयोग के बजाय /\ /g- दोनों जावास्क्रिप्ट में काम करते हैं। बाद के कॉफ़ीस्क्रिप्ट में भी काम करता है।
टॉम लेय्स

27
2015 की .replace(/ /g,"_");तुलना में तेजी है .split(' ').join('_')
गेब्रियल टॉमिटसुका

8
इस @Inez को ब्राउज़ करने वाले भावी लोगों के पास विभाजन की गति / वी.एस. बदलने के। 2018 के अंत तक प्रतिस्थापन काफी तेज है।
रिक्स


58

नीचे प्रसन्ना के सवाल का जवाब देने के लिए:

आप जावास्क्रिप्ट में एकल स्थान से कई स्थान कैसे बदलते हैं?

आप एक ही फ़ंक्शन का उपयोग replaceएक अलग नियमित अभिव्यक्ति के साथ करेंगे। व्हॉट्सएप के लिए अभिव्यक्ति है \sऔर "1 या अधिक बार" के लिए अभिव्यक्ति +प्लस चिह्न है, इसलिए आप एडम के उत्तर को निम्नलिखित के साथ बदल देंगे:

key=key.replace(/\s+/g,"_");

30

आप यह कोशिश कर सकते हैं

 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');

यह भी एकल '-' के साथ कई स्थानों को बदल देगा।


3
संभवत: उल्लेखनीय है: यह अन्य व्हाट्सएप को भी पट्टी करता है।
बेरी एम।

18

मैंने इसके लिए जेएस परफॉर्मेंस टेस्ट http://jsperf.com/split-and-join-vs-replace2 बनाया


1
ऐसा लगता है कि आजकल की जगह बेहतर समग्र विकल्प है
होउमैन सिप

केव - क्या? यद्यपि सभी ब्राउज़र समान नहीं हैं, लेकिन विभाजन / औसतन जुड़ना बेहतर है। वास्तव में, बहुत सारे आधुनिक ब्राउज़रों में, यह एक टोन बेहतर है! यह स्थापित करने के लिए धन्यवाद Inez!
डेविड हॉब्स

4
एक साल से थोड़ा अधिक समय बाद और क्रोम 32.0.1700.107 में ऊपर दिए गए परीक्षण को चलाने पर। str.replace () पैदावार के बेहतर परिणाम (64% तेज)
jenovachild


3

मुझे पता है कि यह पुराना है, लेकिन मैंने किसी को स्ट्रिंग का विस्तार करते हुए नहीं देखा prototype

String.prototype.replaceAll = function(search, replace){
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};

1
आपने किसी को ऐसा करते नहीं देखा क्योंकि यह एक भयानक विचार है। अधिक के लिए यह अन्य SO प्रश्न देखें।

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