//目录结构

//来看一下歌词内容

[00:00.00]领袖音乐分享平台 http://www.kugou.com

[00:02.31]Pretty boy-M2M 英俊男孩 JY93653制作

[00:25.26]I lie awake at night

[00:30.54]See things in black and white

[00:36.06]I ve only got you inside my mind

[00:41.40]You know you have made me blind

还有很多,这里就不贴出来了,占位置

//解析出歌词时间和内容

public static void parserLrc1() throws IOException

{

//通过类加载来到得本地根目录下面的01.lrc文件的inputStream

InputStream inStreams=Test.class.getClassLoader().getResourceAsStream("01.lrc");

//通过InputStreamReader和BufferedReader来配合

//这里使用BufferedReader提供了很的方便,因为BufferedReader是一行一行的读的。

InputStreamReader inReader=new InputStreamReader(inStreams);

BufferedReader readered=new BufferedReader(inReader);

//构建正则表达式,这里的值是构建取得[00:00.00]的内容

Pattern pattern=Pattern.compile("\\[([^\\]]+)\\]");

//定义匹配值

String matcherValue=null;

while((matcherValue=readered.readLine())!=null)

{

//开始匹配

Matcher matcher=pattern.matcher(matcherValue);

//也许整个字符串匹配不到想要的值,所以向下寻找,看是否还有匹配的值

if(matcher.find())

{

//取出这个所匹配得到的值(时间)

String time=matcher.group();

//取出歌词内容,重第10个开始

String lrc=matcherValue.substring(10);

//输出内容看一下

System.out.println(time+"----"+lrc);

/**

* 注意,但这样也许不是我们要的效果

* 我们肯定想,拿到这个时间的豪秒数

* 好在程序中加以控制整个歌词的显示

* 见parserLrc2()方法

*/

}

}

}

看下结果。。。。。

//下面我们来看一下,稍微复杂点的,解析歌词时间和内容,并且放到队列中

//解析歌词时间和内容,并且放到队列中

public static ArrayList parserLrc2() throws IOException

{

//根据队列先进先出的原理,放歌词再合适不过了

Queue queue_time=new LinkedList();

Queue queue_content=new LinkedList();

//再弄个ArrayList来保存队列,方便传输

ArrayList queue_timeandlrc_Content=new ArrayList();

InputStream inStreams=Test.class.getClassLoader().getResourceAsStream("01.lrc");

InputStreamReader inReader=new InputStreamReader(inStreams);

BufferedReader readered=new BufferedReader(inReader);

//构建正则表达式,这里的值是构建取得[00:12.34]的内容

Pattern pattern=Pattern.compile("\\[([^\\]]+)\\]");

//定义匹配值

String matcherValue=null;

while((matcherValue=readered.readLine())!=null)

{

//开始匹配

Matcher matcher=pattern.matcher(matcherValue);

//也许整个字符串匹配不到想要的值,所以向下寻找,看是否还有匹配的值

if(matcher.find())

{

//取出这个所匹配得到的值(时间)

String time=matcher.group();

//增加内容如下\\\\\\\\\\\\\\\\\\\\

//得到总秒数,把时间拿出来通过正则在分解

long millisecond=getMillSecond(time.substring(1,time.length()-1));

//取出歌词内容,重第10个开始

String lrc=matcherValue.substring(10);

//放入队列

queue_time.offer(millisecond);

queue_content.offer(lrc);

//放入ArrayList

queue_timeandlrc_Content.add(queue_time);

queue_timeandlrc_Content.add(queue_content);

}

}

//返回

return queue_timeandlrc_Content;

}

//把得到的00:12.34再进行分解

public static long getMillSecond(String milli)

{

// 分 秒和毫秒

//把00:12.34拆分成new String[]{00,12.34}

String split_minute[]=milli.split(":");

//但我们只需要得到分钟,所以得把分钟给拿出来,也就是第0个元素

long minute=Integer.parseInt(split_minute[0]);

//现在要拿到秒数,也就是第1个元素再进行分解

String split_second[]=split_minute[1].split("\\.");

//这样我们就又拿到了秒

long second=Integer.parseInt(split_second[0]);

//拿到了毫秒

long millsecond=Integer.parseInt(split_second[1]);

//返回总毫秒数

return minute*60*1000+second*1000+millsecond;

}

//执行,拿出Queue里面的结果

public static void main(String[] args) throws Exception

{

ArrayList lrcandtime_Content=parserLrc2();

Queue time=lrcandtime_Content.get(0);

Queue lrc=lrcandtime_Content.get(1);

System.out.println(time.poll()+""+lrc.poll());

Iterator lrc_time=time.iterator();

Iterator lrc_content=lrc.iterator();

while(lrc_time.hasNext() && lrc_content.hasNext())

{

System.out.println(lrc_time.next()+":"+lrc_content.next());

}

}

//结果

java歌词解析器_JAVA 正则解析歌词相关推荐

  1. java xml解析器_Java XML解析器

    java xml解析器 Java XML parser is used to work with xml data. XML is widely used technology to transpor ...

  2. java sax解析器_Java SAX解析器示例

    java sax解析器 SAX Parser in java provides API to parse XML documents. SAX parser is different from DOM ...

  3. 解析器 java_Java高性能解析器实现思路及方法学习

    当你必须自己实现一个解析器时,你对它的期望会有很多,包括性能良好.灵活.特性丰富.方便使用,以及便于维护等等.说到底,这也是你自己的代码.在本文中,我将为你介绍在Java中实现高性能解析器的一种方式, ...

  4. python的网页解析器_网页解析器(BeautifulSoup)-- Python

    分享一下关于 Python的网页解析器(BeautifulSoup) BeautifulSoup解析器 为了实现解析器,可以选择使用正则表达式.html.parser.BeautifulSoup.lx ...

  5. WPF ---- ​xmal 解析器没有办法解析类的TypeConverter

    xmal 解析器没有办法解析类的TypeConverter.代码如下 页面代码: <Window x:Class="WpfApplication_xmln.Windows.Conver ...

  6. jsp springmvc 视图解析器_Java面试题整理——SpringMVC

    SpringMVC 1.什么是SpringMVC Spring MVC是一个MVC的开源框架,Spring MVC = Struts2+spring,Spring MVC就相当于是Struts2加上S ...

  7. java 解析括号_Java如何解析括号中的负数?

    在金融应用中,负数通常用括号表示.在这篇文章中,我们将学习如何解析或转换括号中的负数以产生表示的数字值.要将文本/字符串解析为数字,我们可以使用java.text.DecimalFormat该类. 在 ...

  8. python解析器_Python Python解析器

    欢迎观临Three太宝小屋- 什么是解析器? 解析器(parser)是指一个程序,通常是编译器的部分,接收输入的顺序源程序指令.交互式联机命令.标记或者一些其它定义的接口. 由于整个Python语言从 ...

  9. python的网页解析器_Python网页解析器使用实例详解

    python 网页解析器 1.常见的python网页解析工具有:re正则匹配.python自带的html.parser模块.第三方库BeautifulSoup(重点学习)以及lxm库. 2.常见网页解 ...

最新文章

  1. 微信无法连接服务器501,微信成语猜猜看第501关BUG出现全是英文怎么过解决方法...
  2. Spring BeanDefinitionRegistryPostProcessor BeanPostProcessor作用
  3. 【 FPGA 】Vivado中常用的5个Tcl命令
  4. 敏捷开发的45个好习惯
  5. 斐波那契 (Standard IO)
  6. W3C专业术语翻译对照表
  7. 年轻的工程师如何月入伍万XD
  8. ThreadLocal与Synchronized的用法
  9. HikariDataSource 监控_Prometheus监控告警浅析
  10. laravel nginx配置_nginx高可用
  11. 在那里可以下载jar包?
  12. 汪磊Node基础、Node入门、黑马Node
  13. HTML入门笔记8-上脚注和下脚注标签
  14. windows下安装ppocr服务 paddlehub方式
  15. OrientDB初识-学习文档
  16. 史上最完整的人工智能书单大全
  17. Codeforces 912 D. Fishes (贪心、bfs)
  18. kafka 版本迭代递进
  19. python计算存款复利计算器_GitHub - dxcv/Options-Calculator: 期权价格计算器——金融工程第二次展示...
  20. 2022-2028全球与中国电磁建模软件市场现状及未来发展趋势

热门文章

  1. 美容院双十二促销活动怎么做
  2. 开源导航软件Navit介绍
  3. 奇点将至——VR产业四大发展趋势
  4. python 中的socket模块——网络编程(一)
  5. Linux 内存中的缓冲区(Buffer)与缓存(Cache)
  6. win10 装SQL Server 2000入门各种坑
  7. 浅谈使用NGUI的界面架构(二)关于NData 作者:kUANG tOBY
  8. win8环境编译微软在github上公开的caffe
  9. Caffe在Cifar10上复现ResNet
  10. java junit下载_junit官方下载-Junit下载 4官方版--pc6下载站