Escapar strings em JavaScript
-
12-09-2019 - |
Pergunta
O JavaScript tem uma função built-in função como addslashes
do PHP (ou addcslashes
) para adicionar barras invertidas para caracteres que precisam de escape em uma string?
Por exemplo, esta:
Esta é uma string demo com 'aspas simples' e "aspas".
... se tornaria:
Esta é uma string demo com \ 'Aspas simples \' e \ "Aspas duplas \".
Solução
http://locutus.io/php/strings/addslashes/
function addslashes( str ) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Outras dicas
Você também pode tentar isso para as aspas duplas:
JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
Uma variação da função fornecida pelo Paolo Bergantino que trabalha diretamente na corda:
String.prototype.addSlashes = function()
{
//no need to do (str+'') anymore because 'this' can only be a string
return this.replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Ao adicionar o código acima em sua biblioteca que você será capaz de fazer:
var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());
EDIT:
Na sequência de sugestões nos comentários, quem está preocupado com os conflitos entre bibliotecas JavaScript pode adicionar o seguinte código:
if(!String.prototype.addSlashes)
{
String.prototype.addSlashes = function()...
}
else
alert("Warning: String.addSlashes has already been declared elsewhere.");
Use encodeURI ()
Escapes praticamente todos os personagens problemáticos em cordas para a codificação JSON adequada e de trânsito para uso em aplicações web. Não é uma solução de validação perfeito, mas ele pega a fruta-pendurado baixo.