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

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

          在nas上根本就無法存儲,導致程序執(zhí)行失敗
          ?
          解決的辦法:
          必須對擴展名也進行轉(zhuǎn)換,但又不能全部轉(zhuǎn)換。對于以英文作為擴展名的文件,不作擴展名轉(zhuǎn)換,例如xx.doc
          因此,需要使用某種方法把不合適的擴展名找出來,我現(xiàn)在的規(guī)則是,對包括下面的字符以外字符的擴展名進行轉(zhuǎn)換,這個規(guī)則是我查看window3的所有擴展名后確定的:
          ??????a-z
          ??????A-Z
          ??????_
          ??????-
          ??????0-9
          ???使用下面的正則表達式:
          ??????"[^\\w\\-]
          ??????由于\w已經(jīng)包含了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,說明包含規(guī)則外的字符,需要被轉(zhuǎn)換。

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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 慈利县| 和政县| 油尖旺区| 梧州市| 旺苍县| 同德县| 弥渡县| 渭源县| 万全县| 马尔康县| 泰兴市| 商水县| 易门县| 峨边| 海门市| 东乡县| 仙居县| 博兴县| 叙永县| 桃江县| 大足县| 永新县| 福建省| 乌鲁木齐县| 梅河口市| 论坛| 大足县| 五寨县| 县级市| 海宁市| 和静县| 东台市| 普格县| 班玛县| 嘉荫县| 微山县| 上思县| 泸溪县| 哈密市| 探索| 新昌县|