如何从SubRip .srt文件中仅提取文本(剥离时间码)?

时间:2014-09-17 10:31:31

标签: java netbeans extraction subtitle srt

我想仅使用字幕中的文字进行进一步处理。

因此,打开一个srt文件会加载这个

1
00:00:10,500 --> 00:00:13,000
Elephant's Dream

2
00:00:15,000 --> 00:00:18,000
At the left we can see...

然后,在剥离/提取之后,结果将是

Elephant's Dream
At the left we can see...

我想删除所有编号和时间码,因此输出将仅包含与原始字幕完全相同的纯文本,并将结果存储在变量中以供进一步处理。

public void open_file()
{
    JFileChooser filechooser = new JFileChooser();
    filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    int i  = filechooser.showOpenDialog(this);
    if (i == filechooser.CANCEL_OPTION)
        return;
    File OpenFile = filechooser.getSelectedFile();
    if (OpenFile  == null || OpenFile.getName().equals(""))
    {
        JOptionPane.showMessageDialog(this, "choose file", "Error", JOptionPane.ERROR_MESSAGE);
        return;
    }
    try {
        BufferedReader bufferedreader = new BufferedReader(new FileReader(BukaFile));
        StringBuffer stringbuffer = new StringBuffer();
        String Row;
        while ((Row = bufferedreader.readLine()) != null) stringbuffer.append(Row+"\n");
        textArea.setText(stringbuffer.toString());
        String SubText = textArea.getText();
    } catch (FileNotFoundException ex) {
         JOptionPane.showMessageDialog(null, "File not found" + ex);
    } catch (IOException ex)
            {
                JOptionPane.showMessageDialog(null, "IO Error"+ ex);
            }
}

我已经创建了一个方法(如上所述)来打开并加载现有的srt文件,并将其放入一个String(上面命名为SubText)变量。

要提取这些文本,我所知道的是我必须使用编号,时间码和空白区域作为起点和终点,但我不知道如何编码以检测文本中的编号和时间码

我应该如何在java中完成此操作?顺便说一下,我使用Netbeans。

1 个答案:

答案 0 :(得分:0)

格式很简单,每个字幕都用一个空白行分隔,所以你所做的就是跳过前两行然后读取所有内容,直到你找到一个空行。

所以用这样的东西替换你的循环......

    while (...) {
        String lineNumber = bufferedReader.readLine();
        String time = bufferedReader.readLine();
        String text;
        while (!(text = bufferedReader.readLine()).equals(""))
            stringBuffer.append(text).append("\n");
    }

请务必添加您自己的文件结尾检查。