我正在尝试清理包含上传文件名的字符串。我这样做是因为文件将从网上下载,另外,我想规范化名称。这是我到目前为止所拥有的:
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_-...()”。
关于我应该如何调整我的正则表达式的任何想法?