2017-05-31 3 views
1

私はテキストファイルからテキストを解析し、それを単語で分割しようとしていました。しかし、分割に単語がかかると、新しい行がスペースとして認識されません。 時には、次の行のスペースは認識されますが、単語が続行される前に新しい行が2つある場合は認識されません。ファイルからのテキストの解析に新しい行のためのスペースはありませんか?

私はそれを避けるために、新しい行にスペースを入れました。

これは正常な動作ですか?回避するにはどうすればよいですか?

例えばAテキストファイルでの使用:これはテストあなたの戦略によると、「入力して入力し、」何か、このテキストでは「入力」(writedとして入力タイピング)

package textparseproblem; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import javax.swing.JFileChooser; 

public class TextParseProblem { 
JFileChooser chooser = new JFileChooser(); 
File f; 
String so = ""; 
public static void main(String[] args) throws InterruptedException, Exception { 
    new TextParseProblem().openFchooser(); 
} 

private void openFchooser() throws FileNotFoundException, IOException, InterruptedException, Exception { 
    int returnVal = chooser.showOpenDialog(null); 
    if(returnVal == JFileChooser.APPROVE_OPTION) { 
    f = chooser.getSelectedFile(); 
    } loadFile(f); 
} 

private void loadFile(File fileC) throws IOException { 
    try (BufferedReader reader = new BufferedReader(new FileReader(f))) { 
    while (true) { 
    String s = reader.readLine(); 
    if (s == null) break; 
    so += s; 
    } 
    } parseMethod(); 
} 

private void parseMethod() { 
    String[] sa1 = so.split("\\s"); 
    for(String soo : sa1) { 
    System.out.println(soo); 
    } 
} 
} 
+0

を変更する必要はありません。 [documenation](http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()) – OldProgrammer

+2

so + = "" + sにso + = sを更新する。区切りなしで行を追加しています。 – Kajal

+0

スペース文字と行ターミネータが異なります。 Windowsの場合、行は文字の復帰+改行文字(\ r + \ n)で終了しますが、他のほとんどのシステムでは、改行は単純な改行で終了します。 –

答えて

1

をチェックするために、「入力」、1です

private void loadFile(File fileC) throws IOException { 
    try (BufferedReader reader = new BufferedReader(new FileReader(f))) { 
     while (true) { 
      String s = reader.readLine(); 
      if (s == null) { 
       break; 
      } 
      so += " "+s; // here 
     } 
    } 
    parseMethod(); 
} 

あなたの文字列が必要になりますあなたはそれを解析することができ、その追加の「スペース」を持っている場合は場合:道のあなたが後でそれらを認識することができますので、(行を読んで)文字列の間に追加の「空白」を追加することですこの方法を修正してください:

private void parseMethod() { 
    String[] sa1 = so.split("\\s+"); // to recognize some spaces 
    for (String soo : sa1) { 
     System.out.println(soo); 
    } 
} 

他の方法には)改行がのreadLine(からの結果には含まれていません

+0

それはうまくいきます。私は「\\ s +」を含めると良いと思います。ありがとう –

関連する問題