将歌词lrc解析为二维数组
2017-08-07 本文已影响0人
adtk
//适配三种时间歌词
[00:00]
[00:00.00]
[00:00:00]
function parseLyric(text) {
var lines = text.split('\n'), //将文本按行分隔,存入数组
pattern = /\[\d*:\d*((\.|\:)\d*)*\]/g, //正则表达式
result = []; //保存最终结果的数组
lines.forEach(function (v, index, arr) {
var time = v.match(pattern), //返回与正则匹配的字符串的数组,正则中有/g,为全部
value = v.replace(pattern, ''); //提取歌词
if (time) {
var t = time[0].slice(1, -1).split(':'); //去掉时间里的中括号并分割
if (t.length === 3) { //[00:00:00]
result.push([parseInt(t[0], 10) * 60 + parseInt(t[1]) + parseFloat("0." + t[2]), value]); //最终数组
} else {
result.push([parseInt(t[0], 10) * 60 + parseFloat(t[1]), value]);
}
}
});
//将元素按时间大小排序,貌似没有必要
result.sort(function (a, b) {
return a[0] - b[0];
});
return result;
}