2012-06-22

使用 Regular Expression 處理 Windows 目錄名稱不允許字元

據說 Windows 目錄名稱不能使用以下這些字元:
  • \
  • /
  • :
  • *
  • ?
  • "
  • <
  • >
  • |
為了要在 Java 建立使用者自訂名稱的目錄,所以在建立之前得先處理一下使用者輸入的名稱,假設都把上述的不允許字元都取代為底線「_」,那一般的 replace 用起來就很累,這時還是得翻出既強大又很天書的 Regular Expression 來。
String t = "a\\b/c:d*e?f\"g'h<i>j|k"; // 多加了一個單引號
t = Pattern.compile("[\\\\/:*?\"'<>|]").matcher(t).replaceAll("_"); // 天書在此
只有反斜線(\)和雙引號(")要特別處理,而且一次要用四個反斜線才能掉一個反斜線。

事情一下就結束了!

沒有留言:

張貼留言