2013-02-26 69 views
21

मेरे पास एक प्रोजेक्ट है, जिसमें कुछ जावास्क्रिप्ट var का मूल्यांकन किया जाता है। चूंकि स्ट्रिंग से बचने की आवश्यकता है (केवल एकल उद्धरण), मैंने परीक्षण फ़ंक्शन में सटीक कोड लिखा है। मैं बहुत सरल JavaScript कोड के निम्नलिखित सा है:जावास्क्रिप्ट मूल्यांकन के लिए जावास्क्रिप्ट स्ट्रिंग में एकल उद्धरण से बचने

function testEscape() { 
    var strResult = ""; 
    var strInputString = "fsdsd'4565sd"; 

    // Here, the string needs to be escaped for single quotes for the eval 
    // to work as is. The following does NOT work! Help! 
    strInputString.replace(/'/g, "''"); 

    var strTest = "strResult = '" + strInputString + "';"; 
    eval(strTest); 
    alert(strResult); 
} 

और मैं यह सूचित करना चाहते हैं, कह रही: fsdsd'4565sd

strInputString = strInputString.replace(... 

यह भी है कि आप चरित्र सही ढंग से बचने नहीं कर रहे हैं लगता है:

+0

अपेक्षाकृत सुरक्षित दृष्टिकोण 'var strResult = eval (" ("+ strInputString +") ") हो सकता है;'। साथ ही, 'STRING' अपरिवर्तनीय है, इसलिए' string.replace() '** ** प्रतिस्थापित परिणाम लौटाता है, ** ** ** स्ट्रिंग को संशोधित नहीं करता है। – Passerby

+1

क्या आप यह उम्मीद कर रहे हैं http://jsfiddle.net/ebTtp/ – ssilas777

उत्तर

62

बात यह है कि .replace() स्वयं स्ट्रिंग संशोधित नहीं करता है, तो आप की तरह कुछ लिखना चाहिए है। मेरे लिए काम किया है:

strInputString = strInputString.replace(/'/g, "\\'"); 
+0

हाँ, यह है! धन्यवाद, मुझे पता था कि यह कहीं मूर्खतापूर्ण गलती थी। –

+0

शेष एक्शनस्क्रिप्ट मोहिन्स के लिए वहां काम करता है, यह काम करता है: var greet: स्ट्रिंग = "एल अग्रिम"; नमस्कार = greet.split ("'")। शामिल हों ("\\'"); बाहरी इंटरफेस.call ("फ़ंक्शन() {console.log ('" + greet + "')}"); – Stepan

-3
strInputString = strInputString.replace(/'/g, "''"); 
2

मैं मानता हूँ कि इस var formattedString = string.replace(/'/g, "\\'"); काम करता है बहुत अच्छी तरह से, लेकिन जब से मैं ढांचे प्राडो साथ PHP में कोड के इस हिस्से का इस्तेमाल किया (आप js स्क्रिप्ट एक PHP कक्षा में रजिस्टर कर सकते हैं) मुझे इस नमूने को डबल कोट्स के अंदर काम करने की आवश्यकता थी।

मेरे लिए काम किया गया समाधान यह है कि आपको तीन \ डालने और डबल कोट्स से बचने की आवश्यकता है। "var string = \"l'avancement\"; var formattedString = string.replace(/'/g, \"\\\'\");"

मैं उस प्रश्न का उत्तर देता हूं क्योंकि मुझे यह पता लगाने में परेशानी थी कि तीन \ काम था।

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

  • कोई संबंधित समस्या नहीं^_^