ReplaceAll java抛出异常

时间:2011-04-01 15:42:57

标签: java regex

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

file = file.replaceAll(Pattern.quote("/"),File.separator);
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

1 个答案:

答案 0 :(得分:8)

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

file = file.replaceAll(Pattern.quote("/"), 
                       Matcher.quoteReplacement(File.separator));

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

file = file.replace("/", File.separator);