Заменить все исключения Java бросает - PullRequest
1 голос
/ 01 апреля 2011

почему этот код вызывает исключение?

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 Ответ

8 голосов
/ 01 апреля 2011

Второй параметр replaceAll - это , а также шаблон в некоторой степени. В частности, обратный слеш имеет особое значение. Однако вы не просто хотите использовать Pattern.quote, так как это будет указывать больше, чем нужно. Вы хотите использовать Matcher.quoteReplacement:

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

В качестве альтернативы - и, скорее, проще - вообще не используйте регулярные выражения:

file = file.replace("/", File.separator);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...