解析数据并删除不可见的字符,例如回车符

时间:2018-08-06 11:27:57

标签: java parsing split

我被困住了,对于我的一生,我无法弄清楚为什么我没有将这些数据解析为5个令牌。

我将下面的数据加载到名为test.dat的文件中:

  

第1行:1236 ~~ Tier 5 ~~ 54 ~~更新~~ 01/05/2019

     

Row2:1255934 ~~ Tier 1 ~~ 30 ~~会议系列继续审查期。~~ 8/21/2018

     

第3行:12556 ~~第1层~~ 30 ~~团队开始在此~~ 8/21/2018

绘制客户危害场景

     

Row4:1255936 ~~ Tier 1 ~~ 30 ~~一周的通话。

     

截至目前,在测试文件的8月8日(~~8/21/2018)结束之前设置的呼叫。

查看此编辑器中的第4行如何显示回车?在我的文件中,没有像这里这样的可见换行符。它必须是隐藏字符。

这似乎是导致问题的原因。我试图将其删除,但似乎无济于事。

这是我的代码:

import java.io.*;
import java.util.*;

class MergeData {

public static void main(String[] args) {
    System.out.print("Enter master_file:");
    String master = loadFile();
    HashMap masterMap = readData(master);
}

public static String loadFile(){

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String fileName = new String();
    try{
        fileName = br.readLine();
        System.out.print("opening file... "+ fileName+"\n");

    }catch(IOException nfe){
        System.err.println("Invalid Format!");
    }   

    return fileName;
}

public static HashMap readData(String file){

   HashMap dataMap = new HashMap();
   try {
       FileReader fileReader = new FileReader(file);
       BufferedReader br = new BufferedReader(fileReader);
       String line;

       int rowCnt = 0;
       while ((line = br.readLine()) != null) {

            String clean = line.replaceAll("(?:\\n|\\r)", "");
            String[] fields = clean.split("~~");
            int size = fields.length;
            System.out.println("delimiter size:"  + size );
            rowCnt = rowCnt +1;

            String f1 = null;
            String f2 = null;
            String f3 = null;
            String f4 = null;
            String f5 = null;

            if(size == 5){
                f1 = fields[0]; 
                f2 = fields[1]; 
                f3 = fields[2];
                f4 = fields[3];
                f5 = fields[4]; 
            } else {
                System.out.println("!!! INVALID ROW: id---->" + fields[0]);
            }

            System.out.println(
              "rowCnt:" +rowCnt+ " f1:" +f1+ "----f2:" +f2+ 
              "----f3:" +f3+ "----f4:" + f4+ "----f5:" + f5 +"\n\n");
        }

        br.close();
        fileReader.close();

    } catch (IOException e) {
        System.out.println("\n File Read Error \n" +e );
    }

    return dataMap;
}
}

0 个答案:

没有答案