java 读取歌词并自动排序
========>支持歌词文件类型1.例子:
[00:42]而我只是其中一个[00:46][02:07]爱要越错越勇[00:50][02:11]爱要肯定执着[00:54][02:15]每一个单身的人得看透[00:58][02:19]想爱就别怕伤痛[01:04][02:26][03:26]找一个最爱的深爱的想爱的亲爱的人
2.例子:
[02:13.30]梦缠绵 情悠远哎[02:19.31]啦…[02:27.71]西湖的水 我的泪[02:32.90]我情愿和你化做一团火焰[02:36.80]啊…[02:53.74]千年等一回 等一回啊[03:02.44]千年等一回 我无悔啊
public List<String> ParsingLyric(File file){
List<String> lyric=new ArrayList<String>(); if(file.exists()){ FileReader fileReader=null; BufferedReader reader=null; try { fileReader=new FileReader(file); reader=new BufferedReader(fileReader); String txt=""; String reg="//[(//d{2}://d{2}//.//d{2})//]|//[//d{2}://d{2}//]"; while((txt=reader.readLine())!=null){ if(txt.contains("[ti:")) { // 歌曲信息 lyric.add("歌曲信息: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); }else if (txt.contains("[ar:")) {// 歌手信息 lyric.add("歌手信息: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); }else if (txt.contains("[al:")) {// 专辑信息 lyric.add("专辑信息: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); }else if (txt.contains("[wl:")) {// 歌词作家 lyric.add("歌词作家: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); }else if (txt.contains("[wm:")) {// 歌曲作家 lyric.add("歌曲作家: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); }else if (txt.contains("[al:")) {// 歌词制作 lyric.add("歌词制作: "+txt.substring(txt.lastIndexOf(":")+1,txt.length()-1)); } Pattern pattern=Pattern.compile(reg); Matcher matcher=pattern.matcher(txt); while(matcher.find()){ lyric.add(matcher.group(0).substring(1,matcher.group(0).lastIndexOf("]")).trim()+txt.substring(txt.lastIndexOf("]")+1).trim()); } } //reg="^//d+$"; for(int i=0;i<lyric.size();i++){ if(Pattern.matches("^//d+$",lyric.get(i).substring(0,2))){ if(Pattern.matches("^//d{2}://d{2}//.//d{1}$",lyric.get(i).substring(0,7))){ for(int j=0;j<lyric.size();j++){ if(Pattern.matches("^//d+$",lyric.get(j).substring(0, 2))){ if(Double.parseDouble(lyric.get(i).substring(0, 2))<Double.parseDouble(lyric.get(j).substring(0, 2))){ String temp=lyric.get(i); lyric.set(i, lyric.get(j)); lyric.set(j, temp); } if(Double.parseDouble(lyric.get(i).substring(0, 2))==Double.parseDouble(lyric.get(j).substring(0, 2)) && Double.parseDouble(lyric.get(i).substring(3,8))<Double.parseDouble(lyric.get(j).substring(3,8))){ String temp=lyric.get(i); lyric.set(i, lyric.get(j)); lyric.set(j, temp); } } } }else if(Pattern.matches("^//d{2}://d{2}$",lyric.get(i).substring(0,5))){ for(int j=0;j<lyric.size();j++){ if(Pattern.matches("^//d+$",lyric.get(j).substring(0, 2))){ if(Integer.parseInt(lyric.get(i).substring(0, 2))<Integer.parseInt(lyric.get(j).substring(0, 2))){ String temp=lyric.get(i); lyric.set(i, lyric.get(j)); lyric.set(j, temp); } if(Integer.parseInt(lyric.get(i).substring(0, 2))==Integer.parseInt(lyric.get(j).substring(0, 2)) && Integer.parseInt(lyric.get(i).substring(3,5))<Double.parseDouble(lyric.get(j).substring(3,5))){ String temp=lyric.get(i); lyric.set(i, lyric.get(j)); lyric.set(j, temp); } } } } } } } catch (NumberFormatException e) { e.PRintStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(fileReader!=null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }else{ lyric=null; } for(String s:lyric){ System.out.println(s); } return lyric; }新闻热点
疑难解答