2

我正在尝试'\\''/'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 路径转换问题)

4

7 回答 7

11

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

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

或使用char版本:

String rawPath = filePath.replace('\\', '/');
于 2012-07-16T17:35:35.540 回答
6

你不需要四重转义,

\\\\

, 只是简单

\\

.

于 2012-07-16T17:34:37.087 回答
6

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

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

于 2012-07-16T17:35:12.513 回答
3
public static void main(String[] args) {
    String s = "foo\\\\bar";
    System.out.println(s);
    System.out.println(s.replace("\\\\", "/"));     
}

将打印

foo\\bar
foo/bar
于 2012-07-16T17:39:31.643 回答
2

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

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

System.out.println(filePath);
System.out.println(rawPath);

输出:

abc\\xyz  
abc/xyz
于 2012-07-16T17:39:03.087 回答
1

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

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

于 2012-07-17T02:36:42.003 回答
0

这是获取桌面路径的一个非常小的方法,并向您展示如何在 return 语句中替换它们。

    public static String getDesktopPath() {

      String desktopPath = System.getProperty("user.home") + "/Desktop";
      return desktopPath.replace("\\", "/");

}
于 2020-12-19T06:11:25.503 回答