首页 > 编程 > Java > 正文

java 读取歌词并自动排序

2019-11-08 02:24:50
字体:
来源:转载
供稿:网友

   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;    }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表