2017-07-05 17 views
0

javaでtxtファイルを繰り返し処理しようとしています。次のコードがあります。最初にtouthファイルwithouthを読み込み、問題の行を追加します。このリストはレコードと呼ばれ、この配列はwhileと正しく反復されます。文字列の内容をリストに分割する方法

問題は、私は私がこのコンテンツを分割し、空白を避けるため、分割して前に試してみて、トリミングしたいと思いますが、私はこれを正しく行っておりません。この

TCP 0.0.0.0:135   PCB:0    LISTENING 

のようなコンテンツを受信したことです。

誰かが私に助けてくれますか?

String FILENAME = "src/example.txt"; 
     String line = null; 
    Integer lines=0; 
    Integer totalLines=countLines(FILENAME); 
    List<String> records = new ArrayList<String>(); 

    try{ 
     InputStream fis=new FileInputStream(FILENAME); 
     BufferedReader br=new BufferedReader(new InputStreamReader(fis)); 
      while ((line = br.readLine()) != null) 
      { 
       lines++; 
       if (lines >= 5 && lines <= 180) { 
        records.add(line); 
       } 
      } 
      br.close(); 

    } 


    catch(Exception e){ 
     System.err.println("Error: Target File Cannot Be Read"); 
    } 

    Iterator<String> it = records.iterator(); 

    while (it.hasNext()) { 

     System.out.println(it.next()); 

    } 

よろしく!

答えて

3
あなたは、代わり Stringの配列に分割することができ、 StringTokenizerとして

String substringA = st.nextElement(); // "TCP" 
String substringB = st.nextElement(); // "0.0.0.0:135" 
String substringC = st.nextElement(); // "PCB:0" 
String substringD = st.nextElement(); // "LISTENING" 

は、多くの人に嫌われ、あなたのStringスペースで区切られたトークン、へ

StringTokenizer st = new StringTokenizer(line); 

続いて抽出し、個々の部品ブレイク

"\\s+"を使用して)Stringオブジェクトのメソッドを使用して、複数のスペースで区切られています(split())。 -

String[] tokens = line.split("\\s+"); 

String substringA = tokens[0]; // "TCP" 
String substringB = tokens[1]; // "0.0.0.0:135" 
String substringC = tokens[2]; // "PCB:0" 
String substringD = tokens[3]; // "LISTENING" 
+0

はい、 –

4

を経由してアクセス方法1

すべて1つの空白で複数の空白を置き換えるの最初の -

line = line.replaceAll("\\s+"," "); 

スプリット、よりスペースで、

String[] lineTokens = line.split(" "); 

方法2

ダビデは示唆したように、あなたも、このように行うことができます - これはあなたを助ける

String[] lineTokens = line.split("\\s+"); 

希望を;)

+1

'ラインを意図したとおりに.split( "\\ s +") 'それを一度に行います。 'split'はすでに正規表現を取ります。 –

関連する問題