如何在java字符串中用'/'替换'\'

时间:2012-10-31 08:14:09

标签: java string

我生成了一个文件名并存储在String变量路径中 hav尝试使用

path=path.replaceAll('\','/') 

但这不起作用

7 个答案:

答案 0 :(得分:31)

replaceAll()需要Strings作为参数。 所以,如果你写的话

path = path.replaceAll('\', '/');

它失败了,因为你应该写

path = path.replaceAll("\", "/");

但这也失败了,因为字符'\'应该输入'\\'。

path = path.replaceAll("\\", "/");

这会在执行过程中失败,给你一个PatternSyntaxException,因为fisr String是一个正则表达式(感谢@Bhavik Shah指出它)。所以,把它写成RegEx,就像@jlordo在他的回答中所说的那样:

path = path.replaceAll("\\\\", "/");

你在找什么。

为了使你的核心最佳,你应该让它独立于操作系统,所以使用@Thai Tran的提示:

path = path.replaceAll("\\\\", File.separator);

但这失败了StringIndexOutOfBoundsException(我不知道为什么)。如果您使用没有正则表达式的replace(),它会起作用:

path = path.replace("\\", File.separator);

答案 1 :(得分:11)

如果是文件路径,则应尝试“File.separator”而不是“\”(如果您的应用程序适用于Nix平台)

答案 2 :(得分:7)

你的path=path.replaceAll('\','/');将无法编译,因为你必须逃避反斜杠,

使用path=path.replace('\\','/');(它将替换所有的Occrurences,参见JavaDoc)

path=path.replaceAll("\\\\", "/");(此正则表达式逃避反斜杠);-)

在评论中有一个解释,为什么你需要4个“\”来为一个“\”制作正确的正则表达式。

答案 3 :(得分:2)

您应该使用replace方法并转义反斜杠:

path = path.replace('\\', '/');

请参阅documentation

public String replace(char oldChar, char newChar)
  

返回替换所有出现的新字符串   带有newChar的字符串中的oldChar。

答案 4 :(得分:1)

因为它是一个文件路径,所以你根本不需要做任何操作。 Java理解这两种语法。如果您尝试将文件转换为URL或URI,则可以使用方法来执行此操作。

答案 5 :(得分:-1)

\不仅仅是java中的某个字符。

它有其重要性,一些字符在\之前具有特殊含义,

请参阅here部分escape sequence了解详情

因此,如果您只想在代码中使用\,则会有一个实现\\

所以替换

path=path.replaceAll("\","/") 

path=path.replaceAll("\\","/") 

这会在执行过程中失败,给你一个PatternSyntaxException,因为第一个String是一个正则表达式所以根据@jlordo回答,这是要走的路

path = path.replaceAll("\\\\", "/");

答案 6 :(得分:-1)

   String s="m/j/"; 
   String strep="\\\\";
   String result=s.replaceAll("/", strep);
    System.out.println(result);