【问题标题】:replace doublebackslash with single slash用单斜杠替换双反斜杠
【发布时间】:2013-05-18 20:58:55
【问题描述】:

如何用单斜杠替换双反斜杠?在任何地方都找不到示例。 即。

"c:\\this\\is\\a\\folder\\myfile.jpg" 到 "c:\this\is\a\folder\myfile.jpg"

【问题讨论】:

    标签: actionscript-3 apache-flex actionscript flex4


    【解决方案1】:

    您可以使用String.replace() 函数来做到这一点:

    var rx:RegExp = /\\\\/g;
    var s:String = "c:\\\\folder\\\\folder\\\\folder\\\\file.ext";
    
    trace ( s );
    s = s.replace ( rx, "\\" );
    trace ( s );
    

    您需要在文字字符串中转义 \ 字符,这就是为什么它在上面的代码中加倍。

    【讨论】:

    • 我以前试过。再次尝试您的建议,但不起作用。还有其他方法吗?我厌倦了这个。太复杂。我也需要全部更换。也许是正则表达式解决方案?
    • @StephenNYC 抱歉,我忘记了 AS3 只执行一次替换,除非模式设置为全局 - 我之前使用的测试字符串中只有一个 `\\`,所以它有效.我编辑了我的答案以纠正这一点。
    • 我觉得我走到了尽头。我的字符串没有四个反斜杠,只有两个反斜杠,就像我在问题中指定的那样。它取自 myfile.nativePath 所以我猜它是一个转义的单反斜杠。如果应用您提供的正则表达式,它没有任何效果并且可以理解这是因为它已经是一个反斜杠。但是我需要构建一个只有一个反斜杠的字符串文字,因为它需要作为参数传递给命令行可执行文件 exactly ,如下所示。它不接受正斜杠,所以我别无选择。
    • 我需要生成的实际文本:c:/windows/system32/rundll32.exe c:/windows/system32/shimgvw.dll,ImageView_PrintTo /pt "C:\folder1\folder2\folder3\1368900308754 .jpg" "佳能 CP2000"
    • 没关系。我意识到我看到的值仅来自调试器,如果我使用 trace(),id 会看到实际值。我的坏:P。谢谢你的帮助。
    猜你喜欢
    • 2012-06-16
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2017-07-25
    • 2023-03-16
    相关资源
    最近更新 更多