56

C#Ruby和许多其他语言中,您可以将字符串表示为不需要转义。在 C# 中是这样的

string s = @"\whatever\this\is";

结果是打印时:

\whatever\this\is

这在 JavaScript 中是否以任何形式支持?

4

6 回答 6

159

简短的回答:没有

长答案:Nooooooooooooooooooooooooo

于 2010-03-31T14:26:52.790 回答
23

我不知道你在说什么,但解决转义(等)问题的一种方法是使用 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 脚本)会被浏览器以及搜索引擎和屏幕阅读器忽略. 它是一个完美的隐藏设备,可以将模板偷偷带入您的页面。我喜欢将这种技术用于快速和肮脏的情况,我只需要页面上的一两个小模板,并且想要一些轻巧快速的东西。

取自此页面:http ://ejohn.org/blog/javascript-micro-templating/

于 2010-03-31T14:34:39.563 回答
8

文字字符串可通过使用ES6语言特性获得。Node.js v4.x 现在支持这些以及大约 90% 的其他 ES6 添加。

模板文字(模板字符串)

在 JavaScript 中,字符串文字被称为模板字符串。语法非常简单。

于 2015-10-27T11:58:40.903 回答
3

只要您不将 a\x放入字符串中,这将起作用!

var str = String.raw`\whatever\this\is`;

console.log(str);

于 2016-08-22T13:53:00.967 回答
2

只是逃避逃脱

var myCrazyString = "\\yes\\we\\have\\no\\bananas"
于 2010-03-31T16:14:25.057 回答
1

我有一个解决方案;)

function literalString(regex) {
    return ('' + regex).slice(1, -1);
};

O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>

您基本上将正则表达式转换为字符串并删除第一个和最后一个字符。

于 2016-04-08T19:50:59.683 回答