大家好,我有这样的文件需要用正则表达式处理,可是不太会希望大家能够帮帮我
我的文件是不确定的(尤其是文件类型)
可能是enter.swf
可能是enter.swf#0101
可能是zf\zf\enter.swf
可能是zf\zf\enter.swf@0101(或?123什么的不是正规文件类型的)
我想把文件类型后面多余的字符去掉怎么办?
谢谢大家了
[b]问题补充:[/b]
不好意思,我是初学者,刚才看见回答的也没有带明白,不过我知道第一个回答的是对的,但是自己不知道怎么写,谁在帮帮我,给我个简单的小例子什么的
参考下
[code="java"]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FilenameUtils;
public class RegTest
{
/**
* TODO 方法说明
*
* @param args
*/
public static void main(String[] args)
{
//String str = "enter.swf#0101";
String str = "zf\\zf\\enter.swf@0101";
String ret = processStr(str);
System.out.println(ret);
}
public static String processStr(String str)
{
String begin = FilenameUtils.getBaseName(str);
//得到文件扩展名部分
String ret = FilenameUtils.getExtension(str);
//\w 单词字符:[a-zA-Z_0-9]
//\W 非单词字符:[^\w]
Pattern p = Pattern.compile("\\W");
Matcher m = p.matcher(ret);
int first = -1;
if(m.find())
{
first = m.start();
}
if(first != -1)
{
ret = ret.substring(0, first);
}
return begin + "." + ret ;
}
}
[/code]
其实也就是扩展名后面跟了一些特殊字符再加普通字符
你只要先得到enter.swf@0101,再得到swf@0101,然后查找第一个特殊字符的位置,取子字符串就行了
给你一个正则str.replaceAll("\.[s|S][w|W][f|F].*", ".swf")