ReplaceAll java抛出异常

Fra*_*fka 1 java regex

为什么这段代码会抛出异常?

file = file.replaceAll(Pattern.quote("/"),File.separator);
Run Code Online (Sandbox Code Playgroud)
Message: String index out of range: 1
File: null Class: java.lang.String Methode: charAt Line: -1
File: null Class: java.util.regex.Matcher Methode: appendReplacement Line: -1
File: null Class: java.util.regex.Matcher Methode: replaceAll Line: -1
File: null Class: java.lang.String Methode: replaceAll Line: -1

Jon*_*eet 8

的第二个参数replaceAll在一定程度上的图案.特别是,反斜杠具有特殊含义.但是,您不仅仅想使用,Pattern.quote因为它会引用超出您需要的内容.你想用Matcher.quoteReplacement:

file = file.replaceAll(Pattern.quote("/"), 
                       Matcher.quoteReplacement(File.separator));
Run Code Online (Sandbox Code Playgroud)

或者 - 更确切地说 - 根本不使用正则表达式:

file = file.replace("/", File.separator);
Run Code Online (Sandbox Code Playgroud)