Converting backslashes into forward slashes using javascript does not work properly?

北慕城南 提交于 2019-12-17 16:34:33

问题


I have a javascript variable comming from legacy system with backslashes into forward slashes:

'/46\465531_Thumbnail.jpg'

and I am trying to convert into this:

'/46/465531_Thumbnail.jpg'.

There is no way to fix the problem on the legacy system.

Here is the command I am running on IE8 browser:

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

as response I get:

---------------------------
Message from webpage
---------------------------
/46&5531_Thumbnail.jpg
---------------------------
OK   
---------------------------

actually I just want to be translated as '/46/465531_Thumbnail.jpg'

What is wrong?


回答1:


You need to double the backslash in your string constant:

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

If your legacy system is actually creating JavaScript string constants on your pages with embedded, un-quoted (that is, not doubled) backslashes like that, then it's broken and you'll have problems. However, if you're getting the strings via some sort of ajax call in XML or JSON or whatever, then your code looks OK.




回答2:


It is actually interpreting \46 as an escape-code sequence for the character &. If you are going to hard-code the string, you need to escape the \:

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

Sample: http://jsfiddle.net/6QWE9/




回答3:


The replacement part isn't the problem, it's the string itself. Your string:

"/46\465531_Thumbnail.jpg"

isn't /46\465531. Rather, the backslash is acting as an escape character. You need to change it to:

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

ie, escapeing the backslash with a backslash.




回答4:


Nothing wrong with the replace. The input is wrong.

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


来源:https://stackoverflow.com/questions/6417641/converting-backslashes-into-forward-slashes-using-javascript-does-not-work-prope

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!