【问题标题】:Converting backslashes into forward slashes using javascript does not work properly?使用 javascript 将反斜杠转换为正斜杠无法正常工作?
【发布时间】:2011-09-19 01:06:17
【问题描述】:

我有一个来自旧系统的 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'

怎么了?

【问题讨论】:

    标签: javascript backslash slash


    【解决方案1】:

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

    "/46\465531_Thumbnail.jpg"
    

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

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

    即,用反斜杠转义反斜杠。

    【讨论】:

      【解决方案2】:

      替换没有问题。输入错误。

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

          • 确实我明白这一点。问题是我不能操纵字符串,所以我不能手动修改单反斜杠并放置双反斜杠。我正在尝试这样做var test = escape("/46\465531_Thumbnail.jpg"); alert(teste.replace("%26",'/'));
          • 该字符串究竟是如何进入页面的?如果页面上有由后端代码动态创建的 JavaScript 代码,并且 not 使用“\\”,那么你基本上是沉没了;生成的代码只是被破坏了。您将无法可靠地修复它,因为您将无法从反斜杠混乱的结果中分辨出“好”字符。
          • 确实,解决方案是修复弄乱反斜杠的后端代码。仅使用 javascript 是不可能修复它的。
          • 请注意,如果您使用节点的 path.join,则需要在 path.join 之后链接 .replace,因此它看起来像这样: path.join(some,path,here) .replace(/\\/g,"/").
          • 不确定操作,但我正在寻找一种将 windows 文件路径转换为 ​​linux 的快速方法。因此,在不影响切换它们的便捷方法的全部意义的情况下,我无法对字符串输入做任何事情
          猜你喜欢
          • 2014-09-28
          • 2019-11-19
          • 2020-11-10
          • 2023-03-10
          • 1970-01-01
          • 2016-08-07
          • 2011-05-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多