首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

正則表達式移除報表名稱特殊字符實戰

     編輯:Java 綜合教學

正則表達式移除報表名稱特殊字符實戰

報表匯出時,檔案名稱常含 Windows 檔案系統非法字符(\ ? * : [ ] /),需預先清理。本文提供可直接生產的 Java 程式碼片段。

核心正則與程式碼

// 匹配 Windows 非法檔名字符:\ ? * : [ ] /
Pattern pattern = Pattern.compile("[\\\\\\?*:\\[\\]/]");

// 建立 Matcher
Matcher systemMatcher = pattern.matcher(systemName);
Matcher unitMatcher = pattern.matcher(unitCodeName);

// 替換為空字串(移除)
String cleanSystemName = systemMatcher.replaceAll("");
String cleanUnitName = unitMatcher.replaceAll("");

正則細節解析

擴展建議

  • 跨平台:若需支援 Linux/Unix,只需排除 / 即可(或改為替換為底線 _ 保留可讀性)。
  • 效能:Pattern 編譯較耗時,建議宣告為 static final 常量複用。
  • 替換策略:replaceAll("") 移除;若需保留長度可用 replaceAll("_")。

完整工具類範例

public final class FileNameSanitizer {
    private static final Pattern ILLEGAL_CHARS = Pattern.compile("[\\\\\\?*:\\[\\]/]");

    public static String sanitize(String fileName) {
        if (fileName == null) return "";
        return ILLEGAL_CHARS.matcher(fileName).replaceAll("_");
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
字符正則寫法說明
\\\\\Java 字串雙重轉義:\\ → 正則 \\ → 匹配單一反斜線
? * :\\?*:字面量匹配,? * 需轉義
[ ]\\\\[\\\\]字元類別邊界需轉義
//正則無特殊含義,直接寫