स्थान को डैश के साथ बदलें और सभी अक्षरों को लोअर-केस करें


247

मुझे jQuery या वेनिला जावास्क्रिप्ट का उपयोग करके स्ट्रिंग को पुन: स्वरूपित करने की आवश्यकता है

मान लीजिए कि हमारे पास है "Sonic Free Games"

मैं इसे रूपांतरित करना चाहता हूं "sonic-free-games"

इसलिए व्हाट्सएप को डैश से बदल दिया जाना चाहिए और सभी अक्षरों को छोटे अक्षरों में बदल दिया जाना चाहिए।

कृपया इस पर कोई मदद?

जवाबों:


549

उदाहरण के लिए, स्ट्रिंग replaceऔर toLowerCaseविधियों का उपयोग करें :

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"

gझंडे को नोटिस करें RegExp, यह स्ट्रिंग के भीतर विश्व स्तर पर प्रतिस्थापन करेगा , यदि इसका उपयोग नहीं किया जाता है, तो केवल पहली घटना को बदल दिया जाएगा, और यह भी, कि RegExpएक या एक से अधिक सफेद-अंतरिक्ष वर्णों से मेल खाएगा।


52
एक भिन्नता जिसका उपयोग मैं \ W से करता हूं, जो किसी भी अमानवीय वर्ण का प्रतिनिधित्व करती है। यह 'ए एंड पी किराना' जैसी चीज के लिए उपयोगी है जो 'एपी-किराना' बन जाएगी। str.replace(/\W+/g, '-').toLowerCase();
आदम वासेनुक

1
Regexp भाग के हवाले नहीं ध्यान रहे, यानी replace(/\s+/g, ..और नहीं replace('/\s+/f', .. (अक्षर लोप के बिना)
अट्टिला Fülöp

क्या होगा अगर मैं स्ट्रिंग के शुरू और अंत में रिक्त स्थान को निकालना चाहता हूं?
रोमेल इंडेमेन

@RomelIndemne आजकल आप String.prototype.trimविधि का उपयोग कर सकते हैं :str.trim().replace(/\s+/g, '-').toLowerCase()
CMS

धन्यवाद, एक अच्छा। अब मैं चारों ओर xD जेके अन्य तरीके की आवश्यकता
lawphotog

34

उपरोक्त उत्तर को थोड़ा भ्रमित करने वाला माना जा सकता है। स्ट्रिंग विधियाँ मूल वस्तु को संशोधित नहीं कर रही हैं । वे नई वस्तु लौटाते हैं । यह होना चाहिए:

var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str

10
मुझे लगता है कि यह ध्यान देना महत्वपूर्ण है कि इस अवधारणा को शामिल करने के लिए स्वीकार किए गए उत्तर को संपादित किया गया था
Dexygen

31

आप भी उपयोग कर सकते हैं splitऔर join:

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games

उदाहरण के लिए, कुछ मामलों में जहां शुरुआत में कुछ स्थान हैं, वे साइड-मामलों से अवगत रहें, उन्हें प्रतिस्थापित नहीं किया जाएगा
बोनजौर १२

1

@ सीएमएस का जवाब सिर्फ ठीक है, लेकिन मैं यह नोट करना चाहता हूं कि आप इस पैकेज का उपयोग कर सकते हैं: https://github.com/sindresorhus/slugify , जो आपके लिए करता है और कई किनारे मामलों को कवर करता है (यानी, जर्मन उम्लट्स, वियतनामी, अरबी , रूसी, रोमानियाई, तुर्की, आदि)।


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