【问题标题】:Replace single backslash "\" with double backslashes "\\"将单反斜杠“\”替换为双反斜杠“\\”
【发布时间】:2013-04-15 04:14:27
【问题描述】:

我有带有文件路径的字符串。我想用双反斜杠(“\\”)替换所有单反斜杠(“\”)。

   var replaceableString = "c:\asd\flkj\klsd\ffjkl";
   var part = /@"\\"/g;
   var filePath = replaceableString .replace(part, /@"\\"/);
   console.log(filePath);

控制台向我展示了它。

   c:asdlkjklsdfjkl

我发现了类似的东西,不幸的是它没有用。 Replacing \ with \\

【问题讨论】:

  • @ 在里面做什么?
  • 您的字符串不包含\
  • 请查看大量的 JavaScript 正则表达式示例。这不是唯一被多次解决的问题。很难相信写下一个问题比寻找自己甚至一次花费的时间更少。
  • 为什么需要这样做?
  • 不,不是。您缺少对字符串在 JavaScript 中如何工作的基本理解。

标签: javascript regex replace


【解决方案1】:
var replaceableString = "c:\asd\flkj\klsd\ffjkl";
alert(replaceableString);

这会提醒您c:asdlkjklsdfjkl,因为“\”是一个不会被考虑的转义字符。

要在你的字符串中有一个反斜杠,你应该做这样的事情..

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
alert(replaceableString);

这会提醒您c:\asd\flkj\klsd\ffjkl

JS Fiddle

Learn about Escape sequences here

如果你希望你的字符串默认有'\',你应该转义它..使用escape()函数

var replaceableString = escape("c:\asd\flkj\klsd\ffjkl");
alert(replaceableString);

JS Fiddle

【讨论】:

    【解决方案2】:

    试试:

       var parts = replaceableString.split('\\');
       var output = parts.join('\\\\');
    

    就我个人而言,由于我在 reg exp 方面不是那么专家,因此在处理非字母数字字符时,我倾向于避免使用它们,这既是为了可读性,也是为了避免奇怪的错误。

    【讨论】:

      【解决方案3】:

      您的代码中有几个问题。

      1. 要在您的字符串变量中获得\,您需要对其进行转义。

        当您创建这样的字符串时:replaceableString = "c:\asd\flkj\klsd\ffjkl"; 之前带有 \ 的字符被视为转义序列。所以在字符串创建期间,它会尝试解释转义序列\a,因为这是无效的,它将a 存储到字符串中。例如。 \n 会被解释为换行符。

      2. 我假设@ 来自.net 示例。 Javascript 不知道“原始”字符串。

      3. 从你的正则表达式中删除引号。

      这会做你想做的:

      var string = "c:\\asd\\flkj\\klsd\\ffjkl";
      var regex = /\\/g;
      var FilePath = string.replace(regex, "\\\\");
      

      【讨论】:

        【解决方案4】:

        答案如下:

        单正斜杠替换单反斜杠

        var stringReplaced = String.raw`c:\asd\flkj\klsd\ffjkl`.split('\\').join('/')
        console.log(stringReplaced);
        

        单正斜杠替换双反斜杠

        var stringReplaced = String.raw`c:\\asd\\flkj\\klsd\\ffjkl`.split('\\\\').join('/')
        console.log(stringReplaced);
        

        【讨论】:

        • 这不是答案,因为问题不是如何用正斜杠替换。
        【解决方案5】:

        \ 是转义字符。因此replaceableString 不包含任何反斜杠。

        要解决这个问题,你应该像这样声明字符串:

        var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
        

        【讨论】:

        • 用户在输入字段中输入路径本身的事实。实时处理管理线路,替换所有“\”按键?
        • @user2075057 明确用户输入带有'\'的路径,所以你希望它保留在你的字符串中......??我的意思是不要逃避......??
        • @Prasath K 我想使用我的 java 代码从文件中显示一些东西。
        • @Prasath K 另外,我想将输入字段中的信息保存在同一文件中。这是我的服务所需要的。这个任务我决定了,但如果我必须输入双斜线,那不是一个漂亮的景象
        • @user2075057 转义您的输入字符串并使用它来打开或保存文件.. 我的意思是 escape('c:\asd\flkj\klsd\ffjkl'); ..检查我编辑的答案
        【解决方案6】:

        首先对字符串进行编码

        然后将所有出现的 %5C 替换为 %5C%5C

        最后解码字符串

        var result = encodeURI(input);
        result=decodeURI(result.replace(/%5C/g,"%5C%5C"));
        

        【讨论】:

          【解决方案7】:

          如果您无法控制要在其中查找反斜杠的字符串的内容,并且它包含 SINGLE \ 值(例如,变量 myPath 包含 C:\Some\Folder\file.jpg),那么您实际上可以在JavaScript 为 String.fromCharCode(92)

          所以要在上面的文件路径示例中获取文件名。

          var justTheName = myPath.split(String.fromCharCode(92)).pop();
          

          【讨论】:

            【解决方案8】:

            如果是字符串匹配,最好使用encodeURIComponent,decodeURIComponent。

            match(encodeURIComponent(inputString));
            
            function match(input)
            {
            
            for(i=0; i<arr.length; i++)
            {
            if(arr[i] == decodeURIComponent(input))
            return true;
            else return false;
            }
            }
            

            【讨论】:

              【解决方案9】:

              在字符串中有单个反斜杠的情况下,javascript替换方法不允许我替换单个反斜杠。

              我不得不使用 split 方法,它返回一个拆分字符串的数组,然后在没有反斜杠的情况下连接字符串(或任何你想要替换的字符串)

              解决方案(用下划线代替反斜杠):

              var splitText = stringWithBackslash.split('\\');
              var updatedText = splitText[0] + '_' + splitText[1];
              

              【讨论】:

                【解决方案10】:

                在将值赋给变量之前,您需要通过 String.raw 传递字符串的值。

                var replaceableString = String.raw`c:\asd\flkj\klsd\ffjkl`.replace(/\\/g,"\\\\");
                console.log(replaceableString)

                【讨论】:

                  猜你喜欢
                  • 2017-07-25
                  • 2012-06-16
                  • 2010-09-11
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-06-24
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多