javascript - variable - poner doble comilla en string java



Escape de comillas simples en la cadena de JavaScript para la evaluación de JavaScript (2)

Tengo un proyecto, en el que se evalúa alguna var de JavaScript. Debido a que la cadena debe escaparse (solo comillas simples), he escrito exactamente el mismo código en una función de prueba. Tengo el siguiente bit de código JavaScript bastante simple:

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);
}

Y quiero alertarlo, diciendo: fsdsd'4565sd .

https://code.i-harness.com


Estoy de acuerdo en que esta var formattedString = string.replace(/'/g, "\\'"); funciona muy bien, pero como utilicé esta parte del código en PHP con el framework Prado (puede registrar el script js en una clase de PHP) necesitaba este ejemplo trabajando entre comillas dobles.

La solución que funcionó para mí es que necesitas poner tres \ y escapar de las comillas dobles. "var string = \"l'avancement\"; var formattedString = string.replace(/'/g, \"\\\'\");"

Respondo a esa pregunta ya que tuve problemas para encontrar que tres era la solución.


La .replace() es que .replace() no modifica la cadena en sí, por lo que deberías escribir algo como:

strInputString = strInputString.replace(...

También parece que no estás haciendo el personaje escapando correctamente. Lo siguiente me funcionó:

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




eval