loadP
loadP

Reputation: 404

No space for a new line in parsing text from file?

I was trying to parse text from a textfile , then split it in words. However when split takes the words, it doesn't recognize a new line as a space ? Sometimes it recognize a space on the next line but not if there are two new lines before the words continue.

I put a space on each new line to avoid it.

Is this a normal behavior, and how to avoid it ?

Using e.g a textfile with : this is a test "enter" for checking "enter-enter" something "enter" in this text (typing enter as 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);
  }
 }
}

Upvotes: 1

Views: 59

Answers (1)

Vasyl Lyashkevych
Vasyl Lyashkevych

Reputation: 2222

According to your strategy, one of the way is to add additional "space" between strings (read lines), so you can later recognize them:

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();
}

If in the case your string has that additional "space" you can parse it when you will correct this method:

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

Other methods don't need changes

Upvotes: 1

Related Questions