从文件中解析文本时没有新行的空间?

时间:2017-05-31 16:49:23

标签: java file parsing

我试图从文本文件中解析文本,然后用文字拆分。但是当split分词时,它不会将新行识别为空格? 有时它会识别下一行的空格,但如果在单词继续之前有两个新行,则不会。

我在每个新行上放置一个空格以避免它。

这是正常的行为,以及如何避免它?

使用例如文本文件:这是一个测试“输入”,用于检查“输入 - 输入”在本文中“输入”的内容(输入以输入为准)

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

1 个答案:

答案 0 :(得分: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);
    }
}

其他方法不需要更改