जावास्क्रिप्ट अनचाहे स्लैश को प्रतिस्थापित करता है

मैं बैकस्लैश के साथ एक स्ट्रिंग में एक अनचाहे स्लैश को प्रतिस्थापित करना चाहता हूं। लेकिन कुछ अजीब हुआ:

"\content\hs\gj\home.css".replace(/\\/gi,"/")

जो "contenthsgjhome.css" देता है। मैं समझता हूं कि अगर इसे बदल दें

"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`

फिर यह अपेक्षित के रूप में काम करेगा, लेकिन मैं स्ट्रिंग को नहीं बदल सकता क्योंकि यह सिर्फ नोडज path.join ("conetnt", "hs", "gj", "home.css") द्वारा आउटपुट है </कोड >।

मुझे क्या करना चाहिए?

0
जोड़ा संपादित
विचारों: 1
आप वास्तव में अपनी स्ट्रिंग कैसे प्राप्त करते हैं? इस SO आलेख को देखें, यदि आप इसे जावास्क्रिप्ट में स्वयं नहीं बनाते हैं तो आपकी स्ट्रिंग संभव नहीं होनी चाहिए: stackoverflow.com/questions/2479309/…
जोड़ा लेखक snies, स्रोत

2 उत्तर

"contenthsgjhome.css" लौटने का कारण यह है कि आपकी स्ट्रिंग में वास्तव में कोई बैकस्लैश नहीं है क्योंकि एक स्ट्रिंग अक्षर में एकल बैकस्लाश को अनदेखा कर दिया जाएगा जब तक कि वे निम्नलिखित से बचने के लिए समझ में नहीं आते चरित्र (उदाहरण के लिए, "\\" या "\ n" )। "\ c" का कोई विशेष अर्थ बचने के रूप में नहीं है, इसलिए इसका अर्थ "c" के रूप में किया जाता है।

"\content\hs\gj\home.css"

इस तरह समाप्त होता है:

"contenthsgjhome.css"

तो खोजने के लिए .replace() के लिए कोई बैकस्लैश नहीं है।

(ध्यान दें कि यदि आप करते हैं स्ट्रिंग अक्षर में बैकस्लाश से बच गए हैं जैसे "\\" जो केवल शाब्दिक वाक्यविन्यास का हिस्सा है और एक बार परिणामी स्ट्रिंग का अर्थ केवल एक बैकस्लैश है "\" ।)

शायद अगर आप समझ सकते हैं कि "एफएस द्वारा सिर्फ आउटपुट" का मतलब क्या है, तो कोई और सलाह दे सकता है। यह एक आम समस्या है जब जेएसपी/एएसपी/पीएचपी/आदि जेएस कोड आउटपुट करता है - जेएस दुभाषिया इसे देखकर जेएसपी/एएसपी/पीएचपी/आदि कोड में भागने की जरूरत है।

6
जोड़ा
धन्यवाद, स्ट्रिंग वास्तव में nodejs path.join ("conetnt", "hs", "gj", "home.css" से है)
जोड़ा लेखक iNc0ming, स्रोत
nnnnnn, आपकी सलाह के लिए धन्यवाद। मैं इसे ["conetnt", "hs", "gj", "home.css"] का उपयोग करके हल करता हूं। इसके बजाय ("/") में शामिल हों। समस्या हल हो गई!
जोड़ा लेखक iNc0ming, स्रोत
तो यह एक चर में है, स्ट्रिंग अक्षर में नहीं? path.join ("conetnt", "hs", "gj", "home.css") से आउटपुट का उपयोग करने के तरीके को दिखाने के लिए कृपया अपना प्रश्न अपडेट करें। path.join() doco में उदाहरण आउटपुट प्रतीत होता है कि आगे की स्लेश के साथ जुड़ना, बैकस्लाश नहीं। यदि आप नोडजेज़ के तहत कोड चला रहे हैं जो ब्राउज़र पर भेजे गए आउटपुट का उत्पादन करता है तो आपको सीधे नोडज कोड में भागने की आवश्यकता होती है, ब्राउज़र में नहीं।
जोड़ा लेखक nnnnnn, स्रोत
वास्तव में, आपकी स्ट्रिंग को डबलस्लैश के साथ परिभाषित किया जाना चाहिए: '\\ content \\ hs \\ gj \\ home.css'
जोड़ा लेखक drinchev, स्रोत
yourstring.split(String.fromCharCode(92)).join('/')
0
जोड़ा