2012-03-30 3 views
0

Я новичок в программировании высокого уровня, Ну, я знаю его очень unprofession вопрос: -Разбор текста в Java

Мне нравится Разобрать файл в Java

например мой in.vmf содержит:

vaps graxxx 
metagraphic 
ccccc cccc 
vvvv vvvv 
xxx cccc 
Begin_object "xxx" 
Translate 
somethoing 
anything 
end Begin_object 

Я хотел бы разобрать вышеуказанный файл со следующими правилами:

  • , если он найдет первую строку «vaps graxx», она будет копировать/разыгрывать, пока не найдет Begin_object. и добавить строку
  • затем искать другое слово и копировать/разобрать пока что-то и добавить строку
  • продолжить для других аналогичных поиск и так далее

здесь, если мой кусок кода

BufferedReader FileBuf; 

    try{ 

     // Open the file and read the file 
     FileBuf = new BufferedReader(new FileReader("arc.VMF")); 


     // Create a new file 
     OutputFile = new PrintWriter(new FileWriter("newarc.VMF")); 

     // Start reading file Line by Line 

     while ((LineRead = FileBuf.readLine()) != null) { 

      // LineStr = LineRead.split(""); 

      if (LineRead.isEmpty()) { 
       System.out.println("Line is empty"); 

      } 
      if ((LineRead.startsWith("%")) 
        && (LineRead.indexOf("V A P S") > 0)) { 
       OutputFile.println(LineRead); 
      } 
      if (LineRead.indexOf("BEGIN_OBJECT") > 0) { 
        OutputFile.println(LineRead); 

       } 

....... 
..... 
.... 
      } 

     FileBuf.close(); 
     OutputFile.close(); 

Может кто-нибудь дать некоторые советы по этому вопросу, будет большой помощью. Thanks

+0

Также обратите внимание на регулярное выражение. Он используется для поиска сложных выражений в тексте. http://docs.oracle.com/javase/tutorial/essential/regex/ – nkukhar

ответ

1

Мой совет - написать парсер (в Java или на другом языке), используя что-то вроде jflex и cup.

Делая это, вы можете проанализировать файл и указать чрезвычайно четкие правила.

Посмотрите здесь: http://en.wikipedia.org/wiki/Lexical_analysis и здесь http://en.wikipedia.org/wiki/Parsing

JFlex: http://jflex.de/

Cup: http://www.cs.princeton.edu/~appel/modern/java/CUP/manual.html

+1

Вы забыли простить их всех! Я имею в виду [ANTLR] (http://www.antlr.org/), конечно. – dasblinkenlight

+0

да, но я не знаю, это хорошо, я успешно использовал JFlex/Cup, поэтому я могу объективно и искренне рекомендовать его;) –

+0

Спасибо, но мне нужно использовать только Java – Ganderous