-1

很简单,我想为一个变量分配一个反斜杠字符的值。问题是:

var myVar = '\';     // breaks because the backslash escapes the closing quote
var myVar = '\\';    // now myVar has two backslashes

我能找到的一切都表明你用反斜杠来逃避反斜杠,这是我一直知道的普遍正确的。但是,当我在 IE 中运行它时,我得到两个反斜杠而不是一个。

这是 IE 调试器尝试将 # 替换为 . 在我尝试使用字符串文字转义反斜杠的任何地方都会出现此问题 - string.replace() 函数会产生相同的错误。

截屏

[编辑]

感谢您的评论。在短期内,我可能会像几个人推荐的那样使用八进制或十六进制 ascii。但我真正想要的是理解为什么我不能逃避反斜杠。

这是没有 string.replace 函数的更好的屏幕截图。结果相同。

在此处输入图像描述

[/编辑]

4

4 回答 4

1

好吧,如果它太困扰您,请使用八进制或十六进制 ascii 代码;)

于 2012-07-11T15:37:39.837 回答
1

尝试使用这个:

var backslash = String.fromCharCode(92);

例如:http: //jsfiddle.net/lbstr/Sjja3/

编辑: 我认为不需要该replace功能。你为什么不这样做呢?它在 IE 中对我来说很好用。

if( dirPath === "#" ) dirPath = '\\'; 
于 2012-07-11T15:40:55.973 回答
1

事实证明@Prusse 是对的:转义反斜杠不是问题,问题是 IE 调试器呈现'\''\\'. 在我的情况下,我有一个潜在的问题,其行为方式与损坏的字符串相同,因此需要一段时间才能找到它。

解决方案:

你有没有尝试提醒它?(带有警报(myVar))-
Prusse

于 2012-07-11T18:37:17.327 回答
-1

对我来说,它显示了\\而不是\。看看它有引号的行。

因此,如果字符串"\\nope""\nope". 现在,如果调试器在字符串周围没有引号,我希望只有一个斜杠。

于 2012-07-11T15:57:54.807 回答