zf0512305 2009-06-17 11:47
浏览 275
已采纳

正则表达式处理文件的问题

大家好,我有这样的文件需要用正则表达式处理,可是不太会希望大家能够帮帮我
我的文件是不确定的(尤其是文件类型)
可能是enter.swf
可能是enter.swf#0101
可能是zf\zf\enter.swf
可能是zf\zf\enter.swf@0101(或?123什么的不是正规文件类型的)
我想把文件类型后面多余的字符去掉怎么办?
谢谢大家了
[b]问题补充:[/b]
不好意思,我是初学者,刚才看见回答的也没有带明白,不过我知道第一个回答的是对的,但是自己不知道怎么写,谁在帮帮我,给我个简单的小例子什么的

  • 写回答

3条回答 默认 最新

  • wanghaolovezlq 2009-06-17 12:55
    关注

    参考下

    [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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作