从转义字符中替换单个反斜杠

时间:2016-03-19 14:32:54

标签: javascript regex

如何替换字符串中的单个反斜杠?例如如果你得到一个类似于windows路径的字符串,则所有反斜杠都会转义以下字符。

<macrodef name="resetproperty" >
    <attribute name="name"/>
    <attribute name="value"/>
    <sequential>
        <script language="javascript">
            <![CDATA[
            var path="@{value}";
            path=path.replace(/\\/g, "/");
            project.setProperty('@{name}',path);
            ]]>
        </script>
    </sequential>
</macrodef>;

如果我在蚂蚁方面执行替换,它可以使用命令

 <propertyregex  property="backslash"
                input="${path}"
                global="true"
                regexp="\\"
                replace="/"
    />

1 个答案:

答案 0 :(得分:0)

您在问题中提供的Javascript已经用正斜杠替换path中的所有反斜杠。例如,如果@{value}c:\\a\\xy\\bn,那么path的最终值将为"c:/a/xy/bn"

请记住,反斜杠转义是在Javascript中表示反斜杠所必需的。如果您忘记了它们,您的脚本将无效。在最好的情况下,它会给您一个错误(如果@{value}确实是c:\a\xy\bn Firefox给出的:

SyntaxError: malformed hexadecimal character escape sequence

但在大多数情况下,Javascript会忽略反斜杠字符,你会得到完全不同的结果。在Chrome和Firefox中,"C:\Program Files\Internet Explorer"变为"C:Program FilesInternet Explorer",这就是您在path变量中获得的内容。