JavaScript是否支持逐字字符串?
不,在JavaScript中不支持。这种解决方法似乎很成问题,因为你现在失去了正斜杠的能力。
当我需要从ASP.NET后端创建警报消息或其他东西时,我自己遇到了这个问题,并将其粘贴在前端的JavaScript警报中。问题是开发人员可以在Page.Alert()方法中输入任何内容。
我做了什么来解决这个如下:
public void Alert(string message)
{
message = message.Replace("\\", "\\\\")
.Replace("\r\n", "\n")
.Replace("\n", "\\n")
.Replace("\t", "\\t")
.Replace("\"", "\\\"");
// and now register my JavaScript with this safe string.
}
我再次重申什么了之前说的 - 逐字的字符串是不可能的JavaScript。它实际上很容易逃脱像\n \\ \t
等有效的转义字符,但问题来自逃避无效字符,因为他们在不同的功能处理方式,他们变得不兼容。例如
"\a".replace("\a","\\a") // WORKS \a
"aa\a".replace("\a", "\\a") // FAILS \aaa
此外,如果你看的非法特殊字符数组,例如["\a"]
该角色会只是看起来像一个a
。这使得做你想要的东西基本上不可能。
希望至少为你清除它。
一个解决办法的大杂牌...
<html>
<head>
<script>
function foo() {
var string = document.getElementById('foo').innerHTML;
alert(string);
}
window.onload=foo;
</script>
<style>
#foo{
display: none;
}
</style>
</head>
<body>
Calling foo on page load.
<div id="foo">\\server\path\to\file.txt</div>
</body>
</html>
这有很多副作用,你最好希望在你的字符串中没有&。 – 2011-06-30 20:22:59
@Juan Mendes:“大kludge”的哪部分你不了解? – 2011-06-30 21:17:36
*,*的百科全书跳转至:导航,搜索*,*的百科全书跳转至:导航,搜索*,*的百科全书跳转至:导航,搜索*,*的百科全书跳转至:甚至有资格作为杂食。 – 2011-06-30 22:06:31
模板串做支撑换行符。
`so you can
do this if you want`
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
这当然并不阻止扩展在文本中出现的,并推而广之,代码执行,但也许这是好事吗?
注:我不认为有一种方式来利用现有的字符串,并通过表达插补运行它。这使得不可能以这种方式注入代码,因为代码必须源自源代码。我不知道可以按需进行表达式插值的API。
注2:模板字符串是ES2015/ES6功能。除了(等待它......)IE之外,在每个浏览器中都支持!但是,Edge支持模板字符串。
注3:模板字符串展开转义序列,如果在字符串内部有一个字符串,该字符串将展开其转义序列。
`"A\nB"`
...将导致:
"A B"
...这不会与
JSON.parse
一起工作,因为现在在字符串文字中有一个换行符。可能很高兴知道。
这是一个非常古老的线程,但还是这里有一个解决方法:
function verbatim(fn){return fn.toString().match(/[^]*\/\*\s*([^]*)\s*\*\/\}$/)[1]}
,你会这样使用:
var myText = verbatim(function(){/*This
is a multiline \a\n\0 verbatim line*/})
基本上就是在这里发生的是,js的治疗意见的确作为逐字串。此外,这些都是随功能一起存储的。因此,这里发生的是我们创建了一个函数,其中包含一些我们在逐字函数中提取的逐字评论。
只需使用String.raw()
String.raw`\n`
将输出
\\n
但我不知道如何解决的情况下:
String.raw`hello`hello` // It will throw an TypeError
String.raw`hello\`hello` // Output is 'hello\\`hello'
我不知道如何处理`
:(
这只是一个例子,非常适合给定的问题(Windows路径)。你可以替换/任何角色。 – PhiLho 2008-11-12 16:54:35