【问题标题】:Slash escape in javascriptjavascript中的斜线转义
【发布时间】:2015-01-24 07:20:33
【问题描述】:
function slashEscape(strVar){
    var retVal = strVar;
    retVal = retVal.replace(/\\/g,"\\\\");
    return retVal;
}

我使用该函数来转义某个字符串中的斜线。但结果不对。

var str = slashEscape("\t \n \s");

这将导致 "s" 而不是 "\t \n \s"

【问题讨论】:

  • \t 是一个制表符。您的功能可能不应该存在;你想做什么?
  • 我希望函数转义斜线。并将输出“\t \n \s”而不仅仅是“s”

标签: javascript escaping slash


【解决方案1】:

当字符串常量"\t \n \s"实例化为 JavaScript 字符串时,它会将\t 转换为制表符,将\n 转换为新行,将\s 转换为@ 987654325@.

这就是为什么不能用\\ 替换\ 的原因,因为就JavaScript 而言,没有\ 字符。只有一个制表符、一个新行和一个s


顺便说一下,slashEscape("\t \n \s"); 的结果不是 "s"。 其实是:

"    
s"

第一行是一个制表符,一个新行,然后是一个s。

【讨论】:

  • 这是否意味着我永远无法逃脱 \t 和 \n?
  • 这让我头疼哈哈。
【解决方案2】:

补充一下 Mark Gabriel 已经说过的内容,它是 解析器,而不是任何运行时代码,它可以转换字符串中的转义序列。当字符串被传递给你的函数时,解析器已经删除了反斜杠——它们不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2011-11-04
    • 1970-01-01
    • 2012-07-14
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多