歌词格式转化,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]刻下了印记
推荐阅读
- 视频转换器哪种好用()
- 怎么将桌面上的CAD图纸添加到软件中进行BMP格式转换()
- 2020-07-29《吴军·阅读与写作50讲》24实战才能转化效能
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- 微信小程序请求接口格式
- swift|swift 编码规范收集
- Unix时间戳与日期格式的相互转化
- 用c#转换word或excel文档为html文件|用c#转换word或excel文档为html文件,C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例...
- SwiftUI|SwiftUI 动画组件之Lottie小型高质量交互式的开源动画文件格式
- 解决格式化double小数点变成逗号问题