将歌词lrc解析为二维数组

2017-08-07  本文已影响0人  adtk

将歌词lrc解析为二维数组,去掉歌词中没有时间的广告文字

//适配三种时间歌词
        [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;
}
上一篇下一篇

猜你喜欢

热点阅读