我正在尝试解析.srt但我得到一个内部错误,我无法弄清楚它是什么. 这是我的代码: var subtitles; jQuery.get('SB_LKRG-eng.srt', function(data) { //alert(data); function strip(s) { return s.replace(/^\s+|\s+$/g,"")
这是我的代码:
var subtitles;
jQuery.get('SB_LKRG-eng.srt', function(data) {
//alert(data);
function strip(s) {
return s.replace(/^\s+|\s+$/g,"");
}
srt = data.replace(/\r\n|\r|\n/g, '\n');
//alert(srt);
srt = strip(srt);
//alert(srt);
var srt_ = srt.split('\n\n');
alert(srt_);
var cont = 0;
for(s in srt_) {
st = srt_[s].split('\n');
alert(st);
if(st.length >=2) {
n = st[0];
i = strip(st[1].split(' --> ')[0]);
o = strip(st[1].split(' --> ')[1]);
t = st[2];
if(st.length > 2) {
for(j=3; j<st.length;j++)
t += '\n'+st[j];
}
subtitles[cont].number = n;
subtitles[cont].start = i;
subtitles[cont].end = o;
subtitles[cont].text = t;
//alert(subtitles[cont].start);
}
cont++;
}
});
我可以提取前4个字幕,然后代码停止并打破异常:TypeError,我无法理解为什么…
这是字幕文件的示例:
1 00:00:01,000 --> 00:00:04,000 Descargados de www.AllSubs.org 2 00:00:49,581 --> 00:00:52,049 Bueno, tienes que escapar, tengo que ir a jugar 3 00:00:52,084 --> 00:00:55,178 Tengo que encontrar un día que está lleno de nada más que sol 4 00:00:55,220 --> 00:00:57,552 Crucero por la calle, moviéndose al compás 5 00:00:57,589 --> 00:01:00,683 Todos los que conoces está teniendo nada más que diversión 6 00:01:00,726 --> 00:01:03,251 Deja todo detrás de ti 7 00:01:03,295 --> 00:01:06,128 Siente esas palmeras soplan 8 00:01:06,165 --> 00:01:09,157 La gente en el norte no puede encontrar 9 00:01:09,201 --> 00:01:11,829 Están fuera de palear la nieve 10 00:01:11,870 --> 00:01:14,998 El tiempo para moverse, pero no seas lento 11 00:01:15,040 --> 00:01:17,941 En sus marcas, prepárate para ir
部分代码来自:http://v2v.cc/~j/jquery.srt/jquery.srt.js
谁能帮我?
谢谢
var PF_SRT = function() {
//SRT format
var pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
var _regExp;
var init = function() {
_regExp = new RegExp(pattern);
};
var parse = function(f) {
if (typeof(f) != "string")
throw "Sorry, Parser accept string only.";
var result = [];
if (f == null)
return _subtitles;
f = f.replace(/\r\n|\r|\n/g, '\n')
while ((matches = pattern.exec(f)) != null) {
result.push(toLineObj(matches));
}
return result;
}
var toLineObj = function(group) {
return {
line: group[1],
startTime: group[2],
endTime: group[3],
text: group[4]
};
}
init();
return {
parse: parse
}
}();
jQuery.get('demo.srt')
.done(function(text) {
try {
//Array with {line, startTime, endTime, text}
var result = PF_SRT.parse(text);
} catch (e) {
//handle parsing error
}
});
演示
https://jsfiddle.net/5v7wz4bq/
