2016-01-17 11 views
5

मैं डबल डैश वाले स्ट्रिंग में एक डैश '-' वर्ण को प्रतिस्थापित करने की कोशिश कर रहा हूं।जावास्क्रिप्ट स्ट्रिंग में '-' के साथ '-' को बदलें

2015–09–01T16:00:00.000Z 

to be 

2015-–09-–01T16:00:00.000Z 

इस कोड मैं का उपयोग कर रहा है, लेकिन यह काम किया जाना प्रतीत नहीं होता:

var temp = '2015–09–01T16:00:00.000Z' 
temp.replace(/-/g,'--') 

उत्तर

16

जावास्क्रिप्ट स्ट्रिंग्स में अडिग हैं। इसलिए, जब आप एक स्ट्रिंग को संशोधित करते हैं, तो संशोधन के साथ एक नई स्ट्रिंग ऑब्जेक्ट बनाई जाएगी।

आपके मामले में, replace ने वर्णों को प्रतिस्थापित कर दिया है लेकिन एक नई स्ट्रिंग लौटा दी है। इसे उपयोग करने के लिए आपको इसे एक चर में स्टोर करने की आवश्यकता है।

उदाहरण के लिए

,

var temp = '2015–09–01T16:00:00.000Z'; 
temp = temp.replace(/–/g,'--'); 

नोट स्ट्रिंग जो आप प्रश्न में पता चला है, जब की नकल की, मुझे एहसास हुआ कि यह एक different character है, लेकिन के समान दिखता है और यह नहीं है हाइफ़न के समान (-)। उन पात्रों के लिए वर्ण कोड निम्नानुसार हैं

console.log('–'.charCodeAt(0)); 
// 8211: en dash 
console.log('-'.charCodeAt(0)); 
// 45: hyphen 
+0

जावास्क्रिप्ट में लेकिन लगभग सभी प्रमुख भाषाओं स्ट्रिंग चर अपरिवर्तनीय हैं इतना ही नहीं है। –

4

शायद सबसे आसान बात केवल विभाजन और जुड़ने का उपयोग करना होगा।

var temp = '2015–09–01T16:00:00.000Z'.split("-").join("--"); 
+0

जैसा कि अन्य उत्तरों में बताया गया है, यह केवल तभी काम करना चाहिए जब आप जिस चरित्र को विभाजित कर रहे हैं वह स्ट्रिंग में उपयोग के समान है। – Tushar

7

हाइफन चरित्र आप स्ट्रिंग में है एक आप रेगुलर एक्सप्रेशन - में है से अलग है। भले ही वे एक जैसे दिखते हैं, वे अलग-अलग पात्र हैं।

इस मामले में सही RegExp temp.replace(/–/g,'--')

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