-3

入力ファイル ( book.txt ) に次のような文が含まれているとします。

book 'learning java' for doctor  ahmed mohamed.
the best title is:How to program for simth sahg.

キーボードから入力する代わりに、ファイル(book.txt)から各文を読み取り、ファイル内の各文を3つのパターンに一致させたい:

 String p1 = "(book|\\)|\\:) (.*) for( doctor| author|) (.*)";
String p2 = "regex two";
String p3 = "regex three";

// matcher for each of the patterns .
Matcher m1=Pattern.compile(p1).matcher(inputtext);
Matcher m2=Pattern.compile(p2).matcher(inputtext);
Matcher p3=Pattern.compile(p3).matcher(inputtext);

文が任意のパターンに一致する場合、[ Author , title] を抽出して新しいファイル (bookout.txt) に書き込みます。

or not match any pattern (bookout.txt) に「不一致」という文を書く

タラは

    String p1 = "(book|\\)|\\:) (.*) for( doctor| author|) (.*)";
    String p2 = "regex two";
    String p3 = "regex three";
String inputtext = null;
            // matcher for each of the patterns .
            Matcher m1=Pattern.compile(p1).matcher(inputtext);
            Matcher m2=Pattern.compile(p2).matcher(inputtext);
            Matcher m3=Pattern.compile(p3).matcher(inputtext);


            try {
                BufferedWriter bw = new BufferedWriter(new FileWriter("bookout.txt",true));

            BufferedReader br = new BufferedReader(new FileReader(new File("book.txt") ));
                        inputtext= br.readLine();
                    while ((inputtext=br.readLine())!= null)
                            System.out.println(inputtext);

            String author=null;
        String title = null;

        if (m1.find()) {                //if input matches p1
            title = m1.group(2).trim();
            author = m1.group(4).trim();
        } else if (m2.find()) {           //else if input matches p2
            title = m2.group(1).trim();
            author = m2.group(3).trim();
        } else if (m3.find()) {            //else if input matches p3
            author = m3.group(2).trim();
            title = m3.group(4).trim();
        }

        if (author ==null || title == null) {   //If no matches set the author and title strings...
            bw.write("inputNot match");    //There's no match
        } else {                                //Otherwise...

            bw.write("Author : " + author);
            bw.write("Title : " + title);
            bw.close();

        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

助けてください。コンソールに表示する代わりに出力を表示する方法は、別のファイル (bookout.txt) に書き込まれます。

4

2 に答える 2

0

yourBufferedWriterを使用して出力をファイルに書き込みます。例えば:

BufferedWriter bw = new BufferedWriter(new FileWriter("bookout.txt",true));

// write to the file
bw.write("Author : " + author);

// close the writer when you have finished writing everything
bw.close();
于 2013-03-21T15:56:28.440 に答える
0

それ以外の

System.out.println("Author : " + author);
    System.out.println("Title : " + title);

使用する

bw.write(inputtext )
于 2013-03-21T15:57:46.467 に答える