使用javascript将反斜杠转换为正斜杠无法正常工作?

时间:2011-06-20 21:17:39

标签: javascript backslash slash

我有一个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'

有什么问题?

4 个答案:

答案 0 :(得分:29)

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

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

如果您的遗留系统实际上是在您的网页上创建了JavaScript字符串常量,其中包含嵌入的,未引用的(即不加倍)反斜杠,那么它就会被破坏,您将遇到问题。但是,如果您通过某种类型的XML或JSON或其他类型的ajax调用获取字符串,那么您的代码看起来没问题。

答案 1 :(得分:4)

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

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

示例:http://jsfiddle.net/6QWE9/

答案 2 :(得分:1)

更换部件不是问题,它是字符串本身。你的字符串:

"/46\465531_Thumbnail.jpg"

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

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

即用反斜杠转义反斜杠。

答案 3 :(得分:0)

替换没有错。输入错误。

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