美文网首页
将歌词lrc解析为二维数组

将歌词lrc解析为二维数组

作者: adtk | 来源:发表于2017-08-07 17:13 被阅读0次

    将歌词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;
    }
    

    相关文章

      网友评论

          本文标题:将歌词lrc解析为二维数组

          本文链接:https://www.haomeiwen.com/subject/nkualxtx.html