我生成了一个文件名并存储在String变量路径中 hav尝试使用
path=path.replaceAll('\','/')
但这不起作用
答案 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);