Разбор текста в Java - PullRequest
       11

Разбор текста в Java

0 голосов
/ 30 марта 2012

Я новичок в программировании высокого уровня, Ну, я знаю его очень непрофессиональный вопрос: -

Мне нравится разбирать файл в 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();

Может кто-нибудь дать какие-то советы по этому, будет отличная помощь. Спасибо

1 Ответ

1 голос
/ 30 марта 2012

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

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

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

JFlex: http://jflex.de/

Кубок: http://www.cs.princeton.edu/~appel/modern/java/CUP/manual.html

...