使用javascript将反斜杠转换为正斜杠不能正常工作?

使用javascript将反斜杠转换为正斜杠不能正常工作?,javascript,backslash,slash,Javascript,Backslash,Slash,我有一个javascript变量从遗留系统提交,带有反斜杠到正斜杠: '/46\465531_Thumbnail.jpg' 我试图将其转化为: '/46/465531_Thumbnail.jpg' 无法修复遗留系统上的问题 以下是我在IE8浏览器上运行的命令: javascript:alert("/46\465531_Thumbnail.jpg".replace(/\\/g,"/")); 我得到的答复是: --------------------------- Message from web

我有一个javascript变量从遗留系统提交,带有反斜杠到正斜杠:

'/46\465531_Thumbnail.jpg'

我试图将其转化为:

'/46/465531_Thumbnail.jpg'

无法修复遗留系统上的问题

以下是我在IE8浏览器上运行的命令:

javascript:alert("/46\465531_Thumbnail.jpg".replace(/\\/g,"/"));
我得到的答复是:

---------------------------
Message from webpage
---------------------------
/46&5531_Thumbnail.jpg
---------------------------
OK   
---------------------------
实际上,我只想被翻译成
'/46/465531_Thumbnail.jpg'


怎么了?

您需要将字符串常量中的反斜杠加倍:

alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));

如果您的遗留系统实际上是在页面上使用嵌入的、未引用的(即,不是两倍的)反斜杠创建JavaScript字符串常量,那么它将被破坏,您将遇到问题。但是,如果您通过某种ajax调用以XML或JSON或其他方式获取字符串,那么您的代码看起来是正常的。

它实际上是将
\46
解释为字符
&
的转义码序列。如果要硬编码字符串,则需要转义
\

alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
          ^^ change \ to \\

示例:

更换没有问题。输入错误

javascript:alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));
                     ^
                     \----------------  need to escape this!

替换部分不是问题,而是字符串本身。您的字符串:

"/46\465531_Thumbnail.jpg"
不是
/46\465531
。相反,反斜杠充当转义字符。您需要将其更改为:

javascript:alert("/46\\465531_Thumbnail.jpg".replace(/\\/g,"/"));

也就是说,用反斜杠逃避反斜杠。

我确实理解这一点。问题是我无法操纵字符串,因此我无法手动修改单反斜杠并放置双反斜杠。我正在尝试这样做
var test=escape(“/46\465531_Thumbnail.jpg”);警报(测试替换(“%26”和“/”)字符串在页面上的准确程度如何?如果页面上有由后端代码动态创建的JavaScript代码,并且它没有使用“\\”,那么您基本上是沉沦的;生成的代码只是被破坏了。您将无法可靠地修复它,因为您将无法区分“好”字符和错误的反斜杠导致的字符。是的,解决方案是修复弄乱反斜杠的后端代码。仅使用javascript无法修复此问题。需要注意的是,如果您使用的是节点的path.join,则需要在path.join之后链接.replace,使其如下所示:path.join(部分,path,此处)。replace(/\\\/g,“/”)。不确定op,但我正在寻找一种将windows文件路径转换为linux的快速方法。因此,如果不牺牲切换字符串的便捷方法的全部优点,我无法对字符串输入做任何事情