使用正則表達(dá)式識別合理的文件擴(kuò)展名

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 霍城县| 临湘市| 会理县| 和田市| 泽州县| 略阳县| 咸宁市| 望都县| 烟台市| 肇州县| 南充市| 阿鲁科尔沁旗| 大埔区| 龙海市| 上思县| 望谟县| 龙岩市| 栖霞市| 凭祥市| 马鞍山市| 南投市| 浮梁县| 苏尼特左旗| 禹州市| 岗巴县| 神农架林区| 乌鲁木齐市| 西乌| 南岸区| 英吉沙县| 东至县| 灵寿县| 武隆县| 平顺县| 衡阳市| 探索| 密山市| 贞丰县| 榆树市| 新乡县| 太白县|