2010-06-23 16 views
8

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

var s1 = s2.replace(/ /gi, '_'); //replace all spaces by the character _ 

हालांकि, चरित्र की सभी घटनाओं को बदलने के लिए। चरित्र _ द्वारा, मेरे पास है:

var s1 = s2.replace(/./gi, '_'); 

लेकिन परिणाम एक स्ट्रिंग पूरी तरह से चरित्र _

क्यों और कैसे को बदलने के लिए से भरा है। जावास्क्रिप्ट का उपयोग कर _ द्वारा?

उत्तर

25

द। एक रेगेक्स में चरित्र सब कुछ मिल जाएगा। आप इसे से बचने के लिए की जरूरत है, जब से तुम एक शाब्दिक अवधि चरित्र हैं:

var s1 = s2.replace(/\./gi, '_'); 
6

आप, डॉट से बचने के लिए की जरूरत है, क्योंकि यह regex में विशेष वर्ण

s2.replace(/\./g, '_'); 

ध्यान दें कि डॉट भागने की आवश्यकता नहीं है है चरित्र कक्षाओं में है, इसलिए यदि आप एक ही बार में डॉट्स और अंडरस्कोर के साथ रिक्त स्थान को बदलने के लिए चाहता था, तुम कर सकते हो:

s2.replace(/[. ]/g, '_'); 

i ध्वज का उपयोग करते हुए यहाँ अप्रासंगिक है, w के रूप में अपने पहले regex में के रूप में।

4

आप नियमित अभिव्यक्तियों के बजाय तारों का भी उपयोग कर सकते हैं।

var s1 = s2.replace ('.', '_', 'gi') 
+0

+1 अच्छा बिंदु - regex overkill यहाँ है। (3 में जे जेड कोट उद्धरण ... 2 ... 1 ...) – Piskvor

+1

तीसरा पैरामीटर मानक नहीं है। सभी ब्राउज़र इसका समर्थन नहीं करेंगे। यह https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/replace – HoLyVieR

1

वहाँ भी यह है कि अच्छी तरह से भी काम करता है:

var s1 = s2.split(".").join("_"); // Replace . by _ // 
+0

देखें यह एक बहुत ही अजीब दृष्टिकोण है – SilentGhost

+0

अच्छी तरह से, यह केवल एकमात्र है जिसे RegExp की आवश्यकता नहीं है। – HoLyVieR

+0

यह एक अलग दृष्टिकोण है, यह बेहतर है कि प्रतिस्थापन जो केवल पहली घटना को प्रतिस्थापित करता है – Abhi

संबंधित मुद्दे