बेहतर प्रदर्शन और समझने के लिए स्ट्रिंग-भागने व्यवहार, निम्न उदाहरण लेते हैं:
आप देख सकते हैं स्ट्रिंग स्ट्रिंग विभाजित करके जे एस इंजन द्वारा पार्स किए जाने के बाद स्मृति पर कैसा होता है, इस प्रकार भी इस समस्या के संभावित (बदसूरत) समाधान की पेशकश:
'file:///C:\funstuff\buildtools\viewer.html'.split('')
//>
["f", "i", "l", "e", ":", "/", "/", "/", "C", ":", "", "u", "n", "s", "t", "u",
"f", "f", "", "u", "i", "l", "d", "t", "o", "o", "l", "s", "", "i", "e", "w",
"e", "r", ".", "h", "t", "m", "l"]
'file:///C:\funstuff\buildtools\viewer.html'.split('').map(function(e){
return e.charCodeAt()
});
//>
[102, 105, 108, 101, 58, 47, 47, 47, 67, 58, 12, 117, 110, 115, 116, 117, 102,
102, 8, 117, 105, 108, 100, 116, 111, 111, 108, 115, 11, 105, 101, 119, 101,
114, 46, 104, 116, 109, 108]
//>in Hex values by applying .toString(16)
["66", "69", "6c", "65", "3a", "2f", "2f", "2f", "43", "3a", "c", "75", "6e",
"73", "74", "75", "66", "66", "8", "75", "69", "6c", "64", "74", "6f", "6f",
"6c", "73", "b", "69", "65", "77", "65", "72", "2e", "68", "74", "6d", "6c"]
मूल रूप से एक बैकस्लैश निम्नलिखित केरेक्टर का बचना, इस प्रकार, अप्रत्याशित परिणाम को जन्म दे रही है, तो एस्केपिंग-प्रसंग मान ली नहीं है।
समाधान:
एक लुक-अप तालिका माध्यम से, आप कई errantly पात्रों भाग निकले अगर वे \x20-\x7F
की प्रिंट करने योग्य ASCII वर्ण सीमा के बाहर झूठ बहाल कर सकते हैं। उदाहरण के लिए ऊपर दिए गए उदाहरण के लिए, 12
या \x0c
[12..toString(16)
] '\\'+'v'
बन जाएगा, और इसी तरह।
पुनश्च: जानते हैं कि जानकारी का नुकसान हुआ हो, और आप contextual- या मेटा जानकारी के माध्यम से जानकारी को बहाल करने, अपने मामले कि स्ट्रिंग प्रिंट योग्य ASCII सीमा में है में अर्थ कोशिश कर रहे हैं।
कृपया समुदाय के साथ किसी भी कार्यान्वयन को साझा करें। चीयर्स!
आप HTML में बैकस्लैश स्टोर यदि आप उपयोग कर सकते हैं '.replace (/ \\/जी," \\\\ ");' इसके साथ। उदाहरण के लिए यदि HTML दस्तावेज़ में बैकस्लैश है, तो आप 'document.body.innerHTML.replace (/ \\/g," \\\\ ");', जो सभी बैकस्लैश को डबल बैकस्लैश से प्रतिस्थापित कर सकते हैं। – Viliami