字幕文件srt格式解析

字幕文件srt格式解析解析srt文件,封装为list返回首先新建个class,表示单个字幕数据的实体类publicclassSrtEntity{/***字幕序号*/publicintnumber;/***开始时间*/publicStringbg;/***结束时间*/publicStringed;/***字幕内容*/publ

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

解析srt文件,封装为list返回

  1. 首先新建个class,表示单个字幕数据的实体类
public class SrtEntity { 
   
    /** * 字幕序号 */
    public int number;
    /** * 开始时间 */
    public String bg;
    /** * 结束时间 */
    public String ed;
    /** * 字幕内容 */
    public String content;

    public int getNumber() { 
   
        return number;
    }

    public void setNumber(int number) { 
   
        this.number = number;
    }

    public String getBg() { 
   
        return bg;
    }

    public void setBg(String bg) { 
   
        this.bg = bg;
    }

    public String getEd() { 
   
        return ed;
    }

    public void setEd(String ed) { 
   
        this.ed = ed;
    }

    public String getContent() { 
   
        return content;
    }

    public void setContent(String content) { 
   
        this.content = content;
    }
}

Jetbrains全家桶1年46,售后保障稳定

2.编写srt转list的方法

	/** * 解析srt文件,封装为list并返回 * @param srtPath */
    public List<SrtEntity> getSrtInfoList(String srtPath){ 
   

        List<SrtEntity> srtList = new ArrayList<>();

        try { 
   

            InputStreamReader read = new InputStreamReader(new FileInputStream(srtPath), "utf-8");

            BufferedReader bufferedReader = new BufferedReader(read);

            String lineTxt;

            int index = 0;

            SrtEntity entity = new SrtEntity();

            while ((lineTxt = bufferedReader.readLine()) != null){ 
   
                index ++;
                switch (index % 4){ 
   
                    case 1 :
                        entity.setNumber(Integer.parseInt(lineTxt));
                        break;
                    case 2 :
                        String[] timeArray = lineTxt.split(" --> ");
                        entity.setBg(timeArray[0]);
                        entity.setEd(timeArray[1]);
                        break;
                    case 3 :
                        entity.setContent(lineTxt);
                        break;
                    case 0 :
                        srtList.add(entity);
                        entity = new SrtEntity();
                        break;
                }
            }

        } catch (UnsupportedEncodingException e) { 
   
            e.printStackTrace();
        } catch (FileNotFoundException e) { 
   
            e.printStackTrace();
        } catch (IOException e) { 
   
            e.printStackTrace();
        }

        return srtList;
    }

3.测试方法

public static void main(String[] args) { 
   

        long begin = System.currentTimeMillis();

        FileOperateServiceImpl impl = new FileOperateServiceImpl();
        // 解析srt获取list
        List<SrtEntity> list = impl.getSrtInfoList("E:\\111.srt");
        long end = System.currentTimeMillis();
        System.out.println(end - begin);
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200678.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • async的基本用法「建议收藏」

    async的基本用法「建议收藏」1.async函数的基本形式2.async函数的返回值总是一个Promise无论async函数有无await操作,其总是返回一个Promise。1.没有显式return,相当于return

    2022年6月30日
    33
  • CICD介绍「建议收藏」

    CICD介绍「建议收藏」CICD一概要CICD的采用改变了开发人员和测试人员如何发布软件最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(ContinuousIntegration)、持续交付(ContinuousDelivery)、持续部署(ContinuousDeployment)的新方法。传统的软件开发和…

    2022年5月16日
    47
  • pycharm配置flask环境_调试是什么意思

    pycharm配置flask环境_调试是什么意思1.Flask的调试模式​ 通过调用run()方法启动Flask应用程序。但是,当应用程序正在开发中时,应该为代码中的每个更改手动重新启动它。为避免这种不便,请启用调试支持。如果代码更改,服务器将自行重新加载。它还将提供一个有用的调试器来跟踪应用程序中的错误(如果有的话)。在运行或将调试参数传递给run()方法之前,通过将application对象的debug属性设置为True来启用Debug模式。app.debug=Trueapp.run(debug=True)但是在pycharm编译器

    2022年8月29日
    6
  • Qt面试笔试题问答经验总结

    Qt面试笔试题问答经验总结相信很多人和我一样,虽然经常用qt做些东西,但其实对qt理解并不是很深,尤其在岗位有相关需要的时候也会遇到很多坑。感觉网上也比较少,所以根据个人的面试经验,总结了一些面试qt的问题。答案为我自己的理解总结,有问题还请大佬指出。1.为什么要用qt来做界面Qt的跨平台性很强,比如同样一套代码写好pro文件可以在windows/linux/Android等直接编译。2.信号槽机制在事件的处理方面…

    2022年6月25日
    158
  • 资源-好用的网站_有有资源网

    资源-好用的网站_有有资源网##获取随机图片的API接口:https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicturehttps:/

    2022年8月1日
    4
  • React 时间控件

    React 时间控件使用bootstrap的datetimepicker安装:npminstallreact-bootstrap-datetimepicker使用bootstrap的datetime安装:npminstall–savereact-datetime若使用中文,还需要安装moment,这样datetime插件中的locale属性(控制语言)才能够正常使用:安装moment:npminstal

    2022年5月23日
    85

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号