在C#、Ruby和许多其他语言中,您可以将字符串表示为不需要转义。在 C# 中是这样的
string s = @"\whatever\this\is";
结果是打印时:
\whatever\this\is
这在 JavaScript 中是否以任何形式支持?
简短的回答:没有
长答案:Nooooooooooooooooooooooooo
我不知道你在说什么,但解决转义(等)问题的一种方法是使用 John Resig 似乎很喜欢的技巧。您<script>
在页面中包含块,但给它们一个“类型”,如“text/plain”,以确保浏览器不会将它们交给 Javascript。然后将脚本块的文本用于您喜欢的任何内容。
<script id='a_string' type='text/plain'>
Here is some stuff.
There might be some \escape sequences in it.
</script>
然后你可以用$('#a_string').text()
(或者getElementById
如果你不使用 jQuery 或类似的东西)来获取它。
编辑:这是 John Resig 关于为什么将内容放入这样的脚本块的解释是一个好主意:
快速提示:在您的页面中嵌入具有未知内容类型的脚本(就是这种情况 - 浏览器不知道如何执行 text/html 脚本)会被浏览器以及搜索引擎和屏幕阅读器忽略. 它是一个完美的隐藏设备,可以将模板偷偷带入您的页面。我喜欢将这种技术用于快速和肮脏的情况,我只需要页面上的一两个小模板,并且想要一些轻巧快速的东西。
文字字符串可通过使用ES6语言特性获得。Node.js v4.x 现在支持这些以及大约 90% 的其他 ES6 添加。
在 JavaScript 中,字符串文字被称为模板字符串。语法非常简单。
只要您不将 a\x
放入字符串中,这将起作用!
var str = String.raw`\whatever\this\is`;
console.log(str);
只是逃避逃脱
var myCrazyString = "\\yes\\we\\have\\no\\bananas"
我有一个解决方案;)
function literalString(regex) {
return ('' + regex).slice(1, -1);
};
O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>
您基本上将正则表达式转换为字符串并删除第一个和最后一个字符。