想请教一下
25
00:02:15,134 --> 00:02:17,844
在数钱的那个
The guy who keeps counting his chips?26
00:02:20,222 --> 00:02:22,849
- 他赚了多少?
- 至少10000
- What's he into us for?
- At least 10,000.像上面的字幕这样 如何找出其数据结构,我想把时间轴,中文,英文都分别用写出一个函数待调用!
请知道的人帮我写下代码,用JS实现!
25
00:02:15,134 --> 00:02:17,844
在数钱的那个
The guy who keeps counting his chips?26
00:02:20,222 --> 00:02:22,849
- 他赚了多少?
- 至少10000
- What's he into us for?
- At least 10,000.像上面的字幕这样 如何找出其数据结构,我想把时间轴,中文,英文都分别用写出一个函数待调用!
请知道的人帮我写下代码,用JS实现!
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function subtitles(type) {
var str = document.getElementById('subtitles').innerHTML;
var ar_tmp = str.split(/[\r\n]+/); //分行
var ar = [];
for(var i = 0; i < ar_tmp.length; i ++) if (ar_tmp[i].length > 0) ar.push(ar_tmp[i]); //去掉空行
var result = {SECTION: [], TIMELINE:[], CN: [], EN: []}; //成员分别代表字幕段号、时间轴、中文字幕、英文字幕
ar_tmp = new Array(); //ar_tmp临时数组接下去用于保存字幕段索引号
for(var i = 0; i < ar.length; i ++) {
if (ar[i].match(/^\d+$/)) {
ar_tmp.push(i);
result['SECTION'].push(ar[i]);
result['TIMELINE'].push(ar[i + 1]);
}
}
for(var i = 1; i <= ar_tmp.length; i ++) {
var arCN = [], arEN = [];
//计算每段字幕的行数(包括中英文,中文行数应该与英文的行数是相同的,比如共有6行字幕,其中3行是中文,3行是英文)
var j;
if (i < ar_tmp.length) j = ar_tmp[i] - ar_tmp[i - 1] - 2;
else j = ar.length - ar_tmp[i - 1] - 2;
for(k = 0; k < j / 2; k ++) arCN.push(ar[ar_tmp[i - 1] + 2 + k]);
for(k = j / 2; k < j; k ++) arEN.push(ar[ar_tmp[i - 1] + 2 + k]);
result['CN'].push(arCN);
result['EN'].push(arEN);
}
return result[type];
}window.onload = function() {
document.getElementById('btn_TIMELINE').onclick = function() {
var timeline = subtitles('TIMELINE');
document.getElementById('result').innerHTML = timeline.join('<br />');
}
document.getElementById('btn_CN').onclick = function() {
var CN = subtitles('CN');
var html = '';
for(var i = 0; i < CN.length; i ++) html += CN[i].join('<br />') + '<br />';
document.getElementById('result').innerHTML = html;
}
document.getElementById('btn_EN').onclick = function() {
var EN = subtitles('EN');
var html = '';
for(var i = 0; i < EN.length; i ++) html += EN[i].join('<br />') + '<br />';
document.getElementById('result').innerHTML = html;
}
document.getElementById('btn_S2').onclick = function() {
document.getElementById('result').innerHTML = subtitles('SECTION')[1] + '<br />' + subtitles('TIMELINE')[1] + '<br />' + subtitles('CN')[1].join('<br />') + '<br />' + subtitles('EN')[1].join('<br />');
}
}
</script>
</head><body>
<pre id="subtitles">
25
00:02:15,134 --> 00:02:17,844
在数钱的那个
The guy who keeps counting his chips?26
00:02:20,222 --> 00:02:22,849
- 他赚了多少?
- 至少10000
- What's he into us for?
- At least 10,000.
</pre>
<input type="button" id="btn_TIMELINE" value="时间轴" /><input type="button" id="btn_CN" value="中文字幕" /><input type="button" id="btn_EN" value="英文字幕" />
<input type="button" id="btn_S2" value="显示第二段" /><div id="result"></div>
</body>
</html>
var arCN = [], arEN = [];
//计算每段字幕的行数(包括中英文,中文行数应该与英文的行数是相同的,比如共有6行字幕,其中3行是中文,3行是英文)
var j;
if (i < ar_tmp.length) j = ar_tmp[i] - ar_tmp[i - 1] - 2;
else j = ar.length - ar_tmp[i - 1] - 2;
for(k = 0; k < j / 2; k ++) arCN.push(ar[ar_tmp[i - 1] + 2 + k]);
for(k = j / 2; k < j; k ++) arEN.push(ar[ar_tmp[i - 1] + 2 + k]);
result['CN'].push(arCN);
result['EN'].push(arEN);
}
return result[type];
}这个不行呀,中英字幕行数不一定会相等,例如:81
00:04:56,086 --> 00:04:59,964
你为什么不进去呢?我在这儿直到沃尔特回来
why don't you go inside?
I got it 'til Walter comes back.
这样的话就运行失败!能不能加下我QQ 497800473详谈下,麻烦了,还有许多的问题!