使用正則表達式識別合理的文件擴展名

          系統硬件升級,采用nas存儲設備代替原來的本地存儲,問題出現了。
          ??????用作文件存儲的NAS設備居然不支持中文文件名,對其他字符的支持也不好說。
          原來的系統處理只把文件名進行了轉換,沒有考慮文件擴展名,例如,下面的文件名:
          ??????test.測試
          轉換后變成了:
          ??? 374658237937_1.測試

          在nas上根本就無法存儲,導致程序執行失敗
          ?
          解決的辦法:
          必須對擴展名也進行轉換,但又不能全部轉換。對于以英文作為擴展名的文件,不作擴展名轉換,例如xx.doc
          因此,需要使用某種方法把不合適的擴展名找出來,我現在的規則是,對包括下面的字符以外字符的擴展名進行轉換,這個規則是我查看window3的所有擴展名后確定的:
          ??????a-z
          ??????A-Z
          ??????_
          ??????-
          ??????0-9
          ???使用下面的正則表達式:
          ??????"[^\\w\\-]
          ??????由于\w已經包含了a-z,A-Z,0-9以及下劃線,所以只要再加上減號就可以了。
          ??? 測試用的java代碼如下:
          ?? package com.test;
          import java.util.regex.Pattern;


          public class a {

          ?static public void main(String[] argc)
          ?{
          ????
          ?? System.out.println(Pattern.compile("[^\\w\\-]").matcher("a*b").find());

          ?}
          ?
          }

          如果返回true,說明包含規則外的字符,需要被轉換。

          posted on 2008-04-03 16:22 惡魔 閱讀(3057) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 通江县| 尤溪县| 宜宾市| 灵石县| 桂林市| 九江市| 嘉黎县| 星座| 洮南市| 沐川县| 轮台县| 浑源县| 拜泉县| 平邑县| 洮南市| 陈巴尔虎旗| 新宾| 乐山市| 大冶市| 北京市| 罗城| 奉新县| 星子县| 崇礼县| 沙湾县| 扬中市| 泸定县| 西盟| 青阳县| 轮台县| 九江市| 黄梅县| 丰镇市| 泸州市| 高雄县| 肥西县| 依安县| 天台县| 新乡县| 广饶县| 确山县|