簡體   English   中英

Java正則表達式來清理上傳的文件名

[英]Java regex expression to sanitize an uploaded file name

我正在嘗試清理包含上載文件名稱的字符串。 我這樣做是因為將從網上下載文件,此外,我想對名稱進行標准化。 這是我到目前為止的內容:

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 _-...()”。

關於如何調整正則表達式的任何想法嗎?

循環結束時需要Matcher#appendTail。

一線解決方案:

return badFileName.replaceAll("[^0-9_a-zA-Z\\(\\)\\%\\-\\.]", "");

如果要將其限制為僅字母數字和空格:

return badFileName.replaceAll("[^a-zA-Z0-9 ]", "");

干杯:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM