¿Cómo agrego cuchilladas a una cadena en Javascript?
-
25-09-2019 - |
Pregunta
Sólo una cadena. Añadir \' para que cada vez que hay una comilla simple.
Solución
replace
trabaja para la primera cita, por lo que necesita una pequeña expresión regular:
str = str.replace(/'/g, "\\'");
Otros consejos
siguiente JavaScript función mangos',", b \, \ t, \ n, \ f o \ r equivalente a addslashes función php ().
function addslashes(string) {
return string.replace(/\\/g, '\\\\').
replace(/\u0008/g, '\\b').
replace(/\t/g, '\\t').
replace(/\n/g, '\\n').
replace(/\f/g, '\\f').
replace(/\r/g, '\\r').
replace(/'/g, '\\\'').
replace(/"/g, '\\"');
}
Una cadena se puede escapar de forma integral y compacta usando JSON.stringify. Es parte de JavaScript como de ECMAScript 5 y apoyado por las principales versiones más recientes del navegador.
str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);
Con este enfoque, también caracteres especiales como el byte nulo, los caracteres Unicode y saltos de línea y \r
\n
se escapó adecuadamente en un comunicado relativamente compacto.
Para estar seguro, es necesario no sólo reemplazar las comillas simples, pero así los ya escapados:
"first ' and \' second".replace(/'|\\'/g, "\\'")
Una respuesta que no pidió que puede ser útil, si está haciendo la sustitución en la preparación para el envío de la cadena en alerta () -. O cualquier otra cosa que un solo carácter de comillas que podría tropezar
str.replace("'",'\x27')
Esto reemplazará todos comillas simples con el código hexadecimal para la comilla simple.
var myNewString = myOldString.replace(/'/g, "\\'");
var str = "This is a single quote: ' and so is this: '";
console.log(str);
var replaced = str.replace(/'/g, "\\'");
console.log(replaced);
Te da:
This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'
if (!String.prototype.hasOwnProperty('addSlashes')) {
String.prototype.addSlashes = function() {
return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
.replace(/'/g, ''') /* The 4 other predefined entities, required. */
.replace(/"/g, '"')
.replace(/\\/g, '\\\\')
.replace(/</g, '<')
.replace(/>/g, '>').replace(/\u0000/g, '\\0');
}
}
Uso: alerta (str.addSlashes ());