2014-09-17 17 views
0

추가 처리를 위해 자막의 텍스트 만 사용하고 싶습니다. 나는 모든 번호 및 타임 코드를 제거 할SubRip .srt 파일에서 텍스트 (추출 타임 코드) 만 추출하려면 어떻게해야합니까?

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

그래서하는 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... 

를로드 할 것/제거 추출 후, 결과는 그렇게 될 것입니다 출력은 원본 자막과 완전히 동일한 순서로 일반 텍스트로만 구성되며 추가 처리를 위해 결과를 변수에 저장합니다.

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 파일을로드하고 변수 (서브 텍스트 위에 언급 된) 문자열에 넣어하는 방법을 (위에서)했습니다.

이러한 텍스트를 추출하려면 시작 지점과 끝 지점에 번호 매기기, 시간 코드 및 빈 공간을 사용해야한다는 것만 알면되지만 그 시작 번호와 시간 코드를 검색하는 코드를 작성하는 방법에 대해서는 알지 못합니다. 본문.

자바로 어떻게해야합니까? 나는 Netbeans를 사용하고 있습니다.

+0

어쩌면 첫 번째 두 줄을 건너 뛰고 한 줄을 읽거나, 한 줄을 읽거나, 한 줄을 읽거나, 세 줄 건너 뛰기 등을 할 수 있습니다. – assylias

+0

글쎄, 문제는 그 텍스트가 한 줄 이상이되기도하므로, t은 단지 "3 행 건너 뛰기" – MIMB

답변

0

형식은 간단하며 각 자막은 빈 줄로 구분되어 있으므로 처음 두 줄을 건너 뛰고 빈 줄에 도달 할 때까지 모든 내용을 읽습니다. 이 같은 뭔가 루프 ...

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

파일 검사의 자신의 끝을 추가해야합니다 동안

그래서 당신을 바꿉니다.

+0

내 while 루프는 텍스트 영역의 손길이 닿지 않은 srt를 쓰고 while 루프는 파일의 끝에 (조건으로) 텍스트를 읽고 추가합니다. 내가 while 루프를 구현하려고 할 때 while 루프가 스트립 된 srt를 적어 두었으므로 textarea는 빈 줄만 채웠다. 내 동안의 상태를 바꿔야합니까? – MIMB

+0

죄송합니다. 논리 틀린 길을 찾았어야 했어! equals (""). 나는 지금 고쳤다. – TedTrippin

+0

덕분에 많은 선생님 :) 그것은 효과가! BTW, 내 while 루프 조건 때문에, 난 단지 하나의 bufferedreader 건너 뛰기가 필요합니다. 그리고 srt 파일에서 html 태그를 어떻게 제거 할 수 있습니까? (예 : 또는 ) – MIMB