想请教一下  
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实现!

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <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>
      

  2.   

       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];
    }这个不行呀,中英字幕行数不一定会相等,例如:81
    00:04:56,086 --> 00:04:59,964
    你为什么不进去呢?我在这儿直到沃尔特回来
    why don't you go inside?
    I got it 'til Walter comes back.
    这样的话就运行失败!能不能加下我QQ 497800473详谈下,麻烦了,还有许多的问题!