在JavaScript中转义字符串

Ste*_*son 62 javascript string quotes escaping backslash

JavaScript是否有像PHP addslashes(或addcslashes)函数这样的内置函数来向需要在字符串中转义的字符添加反斜杠?

例如,这个:

这是一个带有"单引号"和"双引号"的演示字符串.

...会成为:

这是一个带有"单引号"和"双引号"的演示字符串.

Pao*_*ino 89

http://locutus.io/php/strings/addslashes/

function addslashes( str ) {
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Run Code Online (Sandbox Code Playgroud)

  • 那么答案是"不,没有像PHP的addslashes这样的内置函数" (46认同)
  • 你能解释'\ u0000'替换吗?谢谢. (11认同)
  • 好的,我将把这个函数添加到我不断增长的JavaScript函数/方法集合中......谢谢! (7认同)

小智 71

您也可以尝试使用双引号:

JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
Run Code Online (Sandbox Code Playgroud)

  • 这也抓住了换行符,制表符等等,其他答案被忽略了.并且没有它变成所有可能的特殊字符taboot的列表.这是最好的答案.值得注意的是,它只是逃避了```而不是```. (7认同)
  • 这是一个很好的答案.令我感到惊讶的是,没有"明显的"内置方法可以逃避报价,但这样可以完成工作.有什么警告吗? (3认同)

Mar*_*aio 40

Paolo Bergantino提供的函数的变体,直接在String上工作:

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');
} 
Run Code Online (Sandbox Code Playgroud)

通过在库中添加上面的代码,您将能够:

var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());
Run Code Online (Sandbox Code Playgroud)

编辑:

根据评论中的建议,无论谁关注JavaScript库之间的冲突,都可以添加以下代码:

if(!String.prototype.addSlashes)
{
   String.prototype.addSlashes = function()... 
}
else
   alert("Warning: String.addSlashes has already been declared elsewhere.");
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,扩展本机javascript对象被许多不良实践所考虑. (7认同)
  • @BenjaminGruenbaum:如果你害怕冲突,你可以在扩展之前添加`if(!String.prototype.addSlasches)` (6认同)
  • @BT:实际上,`addSlashes` func应该以这种或那种方式添加斜杠.无论如何,我更新了答案中的代码以反映您的建议. (4认同)