使用正则表达式识别合理的文件扩展名

系统硬件升级,采用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 恶魔 阅读(3020) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: