Я пытаюсь дезинформировать строку, содержащую имя загруженного файла. Я делаю это, потому что файлы будут загружаться из Интернета, и, кроме того, я хочу нормализовать имена. Это то, что я до сих пор:Явное выражение регулярного выражения для дезинфекции имени загруженного файла
private String pattern = "[^0-9_a-zA-Z\\(\\)\\%\\-\\.]";
//Class methods & stuff
private String sanitizeFileName(String badFileName) {
StringBuffer cleanFileName = new StringBuffer();
Pattern filePattern = Pattern.compile(pattern);
Matcher fileMatcher = filePattern.matcher(badFileName);
boolean match = fileMatcher.find();
while(match) {
fileMatcher.appendReplacement(cleanFileName, "");
match = fileMatcher.find();
}
return cleanFileName.substring(0, cleanFileName.length() > 250 ? 250 : cleanFileName.length());
}
Это работает нормально, но по странной причине расширение файла стирается. т. е. «p% Z_-... #! $() = ¡¿& + .jpg« заканчивается «p% Z _-...()».
Любая идея о том, как мне настроить мое регулярное выражение?
После размещения вопроса я начал задаваться вопросом, почему Didn» t Я использую replaceAll ... – Gamb
Я собирался сказать, что replaceAll это то, что я буду использовать в этой ситуации. – carmenism
Вышеприведенный код может быть сведен к двухстрочному слою с помощью 'replaceAll (" [^ 0-9a-zA-Z \\ + \\. \\ (\\) _ \\ -] "," ") ' – Gamb