歌词格式转化,trc转lrc

【歌词格式转化,trc转lrc】trc和lrc都是文本格式,不同的是trc中有<150><***>把歌词分隔开了。

package com.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class Turn { /** * 递归获取文件夹下所有文件 * @param path * @return */ public static List files=new ArrayList(); public static List getFiles(String path) { //获取文件位置 File file = new File(path); //获取文件数组 File[] array = file.listFiles(); for (int i = 0; i < array.length; i++) { if (array[i].isFile()) { //保存到集合中 files.add(array[i]); } else if (array[i].isDirectory()) { getFiles(array[i].getPath()); }} return files; }/** * 读取文件 * @param fileName * @return */public static String readFileContent(String fileName) { File file = new File(fileName); BufferedReader reader = null; StringBuffer sbf = new StringBuffer(); try { reader = new BufferedReader(new FileReader(file)); String tempStr; while ((tempStr = reader.readLine()) != null) { sbf.append(tempStr+"\r\n"); } reader.close(); return sbf.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } return sbf.toString(); }/** * @写入文件 * @param fileName 文件名 * @param newPath 输出路径 *@param file1输出内容 */ public static boolean writeFileContent(String fileName,String newPath,String file1){boolean pd=true; try{ File file =new File(newPath+"/"+fileName+".lrc"); Writer out =new FileWriter(file); out.write(file1); out.close(); } catch (Exception e) { pd=false; e.printStackTrace(); } return pd; } }

package com.util; import java.io.File; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Servce { public static boolean ioUtil(String path,String newPath){//获取每个文件 List files = Turn.getFiles(path); //文件内容 String file1=null; boolean pd=false; int i=0; for (; i < files.size(); i++) {//files.get(i).toString()//获取全路径 //files.get(i).getName(); //获取文件名System.out.println((i+1)+":"+files.get(i).getName()); //读取文件 file1 = Turn.readFileContent(files.get(i).toString()); System.out.println("正在读取:/n"+file1); //匹配<***> 例如:<151> 的规则 Pattern pattern = Pattern.compile("<(.*?)>"); Matcher matcher = pattern.matcher(file1); while(matcher.find()){ //System.out.println(matcher.group(1)); //System.out.println(file1.replace("<"+matcher.group(1)+">", "")); //提取<***> //System.out.println(matcher.group()); //把<***>替换为空字符串 file1=file1.replace(matcher.group(), ""); }//System.out.println(file1); //获取文件名,ti /** * 获取文件标题==文件名 */ Pattern pattern2 = Pattern.compile("(\\[[^\\]]*\\])"); Matcher matcher2 = pattern2.matcher(file1); String name=null; int t=0; while(matcher2.find()){ t++; if(t<2){ name=matcher2.group(1); } } name=name.replace("[ti:", ""); //name=name.replace("[ar:", ""); //name=name.replace("[al:", ""); name=name.replace("]", ""); //写入文件。 Turn.writeFileContent(name, newPath, file1); pd=true; }System.out.println("一共有 "+i+" 个文件"); return pd; } }

package com.util; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) {//获取基础信息 Scanner s=new Scanner(System.in); System.out.println("请输入读取文件夹的路径"); String path = s.next(); System.out.println("请输入输出的目标路径"); String newPath = s.next(); System.out.println(Servce.ioUtil(path,newPath)==true?"转换成功":"转换失败"); } }

trc歌词格式:
[ti:回到未来] [ar:T-T / 卓卓] [al:夜行动物园] [ly:T-T / 卓卓] [mu:T-T / 卓卓] [ma:顺德] [pu:] [by:ttpod] [total:134976] [offset:0] [00:00.264]<203>回<151>到<150>未<152>来 <151>- <151>T-T / 卓卓 [00:01.222]<163>作<143>词<151>:<201>T-T <152>/ <151>卓<150>卓 [00:02.333]<151>作<151>曲<151>:<151>T-T <152>/ <150>卓<154>卓 [00:03.393]<150>编<151>曲<203>:<151>顺<201>德 [00:10.112]<151>我<151>上<151>课<150>趴<150>在<151>桌<302>上 [00:11.318]<152>用<151>耳<202>机<150>偷<152>偷<150>播<251>放 [00:12.526]<150>那<151>时<150>我<151>觉<150>得<153>超<252>酷 [00:13.683]<150>不<151>懂<151>说<152>唱<201>的<201>多<406>样 [00:15.095]<152>凡<201>事<151>总<152>想<202>试<151>试<303>看<151>便<151>开<151>始<150>自<201>己<504>写 [00:17.715]<153>后<201>知<151>后<100>觉<201>越<152>陷<151>越<152>深<153>开<151>始<200>熬<254>起<503>夜 [00:20.237]<153>于<152>是<151>又<101>多<150>了<201>一<151>个<151>秘<152>密 [00:21.471]<149>课<150>堂<150>上<151>少<100>了<151>一<101>丝<150>力<151>气 [00:22.724]<151>把<100>自<152>己<150>锁<101>房<152>间<150>密<100>闭<151>押<151>韵<150>在<152>心<151>里 [00:24.535]<100>刻<151>下<152>了<100>印<151>记

lrc歌词格式
- [ti:回到未来] [ar:T-T / 卓卓] [al:夜行动物园] [ly:T-T / 卓卓] [mu:T-T / 卓卓] [ma:顺德] [pu:] [by:ttpod] [total:134976] [offset:0] [00:00.264]回到未来 - T-T / 卓卓 [00:01.222]作词:T-T / 卓卓 [00:02.333]作曲:T-T / 卓卓 [00:03.393]编曲:顺德 [00:10.112]我上课趴在桌上 [00:11.318]用耳机偷偷播放 [00:12.526]那时我觉得超酷 [00:13.683]不懂说唱的多样 [00:15.095]凡事总想试试看便开始自己写 [00:17.715]后知后觉越陷越深开始熬起夜 [00:20.237]于是又多了一个秘密 [00:21.471]课堂上少了一丝力气 [00:22.724]把自己锁房间密闭押韵在心里 [00:24.535]刻下了印记

    推荐阅读