当前位置:  开发笔记 > 编程语言 > 正文

JavaScript是否支持逐字字符串?

如何解决《JavaScript是否支持逐字字符串?》经验,为你挑选了3个好方法。

在C#中,你可以使用这样的逐字字符串:

@"\\server\share\file.txt"

JavaScript中有类似的东西吗?



1> John Leidegr..:

模板字符串确实支持换行符.

`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因为现在字符串文字中有一个新行.可能很高兴知道.



2> Timothy Khou..:

不,在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.
}


这只是一个例子,非常适合给定的问题(Windows路径).你可以替换/任何角色.

3> estani..:

这是一个非常老的线程,但仍然是一个解决方法:

function verbatim(fn){return fn.toString().match(/[^]*\/\*\s*([^]*)\s*\*\/\}$/)[1]}

您将使用哪个:

var myText = verbatim(function(){/*This
 is a multiline \a\n\0 verbatim line*/})

基本上这里发生的是js将评论确实视为逐字字符串.此外,这些与功能一起存储.所以这里发生的是我们创建一个带有一些逐字注释的函数,我们在逐字函数中提取这些注释.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有