【问题标题】:Replace "\\" with "/" in Java在Java中将“\\”替换为“/”
【发布时间】:2012-07-15 14:32:15
【问题描述】:

我正在尝试在 java(Android) 中用 '/' 替换 '\\',但这似乎不起作用!

String rawPath = filePath.replace("\\\\", "/");

这有什么问题?我已经转义“\”并尝试转义“/”但没有用。原始字符串没有任何反应。

    filePath = abc\\xyz(not after escaping two \\, the original string is with two \\)
    rawPath = abc \ xyz
    expected = abc/xyz

这样做的正确方法是什么? (另一个 Windows 文件到 Android 路径转换问题)

【问题讨论】:

  • 为什么不在你的代码中使用java.io.File.separator
  • 是的 - 切换到那个,现在只是测试一些东西并遇到这个,谢谢!

标签: java android replace


【解决方案1】:

你不需要四重转义,

\\\\

,只是简单的

\\

.

【讨论】:

    【解决方案2】:

    用单斜杠转义就足够了。以下对我来说很好。

    String rawPath = filePath.replace("\\", "/");

    【讨论】:

      【解决方案3】:

      使用String.replace(String, String) 时,反斜杠不需要转义两次(即使用replaceAll - 它处理正则表达式)。所以:

      String rawPath = filePath.replace("\\", "/");
      

      或者使用char版本:

      String rawPath = filePath.replace('\\', '/');
      

      【讨论】:

      • 反斜杠在java中总是需要转义。这与正则表达式无关。您的建议将替换每个\` with /`。
      • 字符串中的反斜杠始终需要在代码中进行转义,除非您打算将其用作其他转义序列的一部分。
      • ...两次,当然...(这就是为什么我写了关于replaceAll的评论)
      • @dacwe 我认为问题是关于用基于给定示例的正斜杠替换字符串中的 2 个反斜杠序列。我可能误会了。
      • 谢谢!好吧,基本上我所拥有的是,我从我的 Windows 环境中以这种形式filepath = "abc\\xyz"(只有两个'\\')得到一个字符串,这就像一个魅力
      【解决方案4】:

      如果您想用单个正斜杠替换原始字符串中的 2 个反斜杠序列,这应该可以:

      String filePath = "abc\\\\xyz";
      String rawPath = filePath.replace("\\\\", "/");
      
      System.out.println(filePath);
      System.out.println(rawPath);
      

      输出:

      abc\\xyz  
      abc/xyz
      

      【讨论】:

        【解决方案5】:
        public static void main(String[] args) {
            String s = "foo\\\\bar";
            System.out.println(s);
            System.out.println(s.replace("\\\\", "/"));     
        }
        

        将打印

        foo\\bar
        foo/bar
        

        【讨论】:

          【解决方案6】:

          首先你真的在字符串中有两个反斜杠吗?这只出现在 Java 源代码中。在运行时只有一个反斜杠。因此,任务减少到将反斜杠更改为正斜杠(为什么?)。如果您使用replaceAll(),则需要一个正则表达式,这将需要其中四个:两个用于编译器,两个用于正则表达式,但您没有使用它,您使用的是replace(),这不是t 一个正则表达式,所以你只需要两个,一个用于编译器,一个用于自身。

          你为什么要这样做?根本不需要在 Java 的文件路径中使用反斜杠,也不需要将它们转换为 / 除非你正在用它们做类似 URL 的事情,在这种情况下有 File.toURI() 方法和 URI和 URL 类。

          【讨论】:

            【解决方案7】:

            这里有一个很小的方法来获取桌面路径,并告诉你如何在return语句中替换它们。

                public static String getDesktopPath() {
            
                  String desktopPath = System.getProperty("user.home") + "/Desktop";
                  return desktopPath.replace("\\", "/");
            
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-01-14
              • 2012-09-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-28
              相关资源
              最近更新 更多