2017-03-08 10 views
1

ランダムfile.txtString[]に分割しようとしています。テキストはGutenberg.orgから来ていて、新しい行がたくさんあります。正規表現と改行

例:リンカーン書簡の

プロジェクト・グーテンベルク電子ブック、エイブラハム・リンカーン

によるこの電子ブックは、どこにでも無償で誰の使用と全く ほとんど制限があります。あなたは、プロジェクト・グーテンベルクのライセンスの下、それをコピーし、それを離れて与えるか、または それを再使用することができwww.gutenberg.org

タイトルで、この電子ブックまたはオンライン を含ま:リンカーン書簡

段落を終わらせ、段落を始める単語ではなく、すべての単語に対して正しい出力が得られます。

たとえば、「リンカーン」と「これ」の組み合わせであるが、1語として扱われる「リンカーン」。代わりに、私は "リンカーン"と "これ"を持っていたいと思います。

token = word.split("\\s|\\.|\\,");これは私がテキストファイルを分割するために使用している正規表現です。助けてください。ここで

は、私が入力したテキストファイルを使用していますコードです:

FileReader fr = new FileReader("C:\\Users\\Petr Holoubek\\Desktop\\hello world.txt"); 
    BufferedReader br = new BufferedReader(fr); 

    String[] tokens; 
    String temp; 
    int i; 

    i = 0; 
    temp = ""; 
    while((i=br.read()) != -1) { 
     temp = temp + br.readLine(); 
    } 

そしてここでは、実際のトークン化である:

public String[] tokenize(String word){ 
//divides the input by non-char symbol and 
//puts tokens into state hashmap as keys 
    String[] token; 

    token = word.split("\\s|\\.|\\,"); 
    return token; 
} 

はあなたの助けのためにありがとうございました!

+0

は私達にあなたのコードを表示します。 Sean Fが正しければ、 'BufferedReader#readLine'を使っています。これは完璧です。メソッドはあなたのための行末処理とテキストのコレクションを 'String'に処理します。本当の努力とバグ節約。あなたがまだいない場合はそれを使用してください。しかし、それはすべてを行うことはありません。それぞれの行の最後にスペースを挿入しなければなりません。行を除いてはいけません。悪魔はその後詳細になります。低レベルの 'read'を使わないでください。自分に親切にする!そして良かったら、あなたのコードを見せてください。 –

答えて

0

あなたはおそらくBufferedReader.readLineを使ってファイルを読んでいるでしょう。これは、改行文字を一つの行と次の行との間で捨てて、それらの文字列を連結して、各行の終わりを次の行の先頭につなぎます。あなたは、おそらくこのような何かをやっている

String str = ""; 
while(true) { 
    String next = bufferedReader.readline(); 
    if(next == null) break; 
    str += next; 
} 

読んで使用し、readlineのを使用しないでください(オフINT、CHAR [] CBUFを、int型のlen)

関連する問題