有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中解析将CSV行转换为列

我有一个CSV,如下所示

Element,Value
LIN,887873083091
QTY,12
LIN,887873083107
QTY,13
LIN,887873083114
QTY,10
LIN,887873083121
QTY,6
LIN,887873083138
QTY,0
Avialability,018
Avail_Date,20391231
LIN,887873083145
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732553461
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637901
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637918
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637925
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637932
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637949
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637956
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637963
QTY,0
Avialability,018
Avail_Date,20391231
LIN,886732637970
QTY,0
Avialability,018
Avail_Date,20391231

如您所见,共有4个元素LIN、数量、可用性、可用日期

我想将这些元素作为列,并将值放在下面,使其成为CSV文件

如下面的示例所示

LIN,QTY,Availability,Avail_Date
887873083091,12,,
887873083107,13,,
887873083114,10,,
887873083121,6,,
887873083138,0,018,20391231
887873083145,0,018,20391231
886732553461,0,018,20391231

原始版本遵循订单LIN、数量、可用性和可用日期。。但在某些情况下,可用性和使用日期可能会丢失。在这种情况下,我想将空白设置为新CSV,就像示例输出中的前4行一样

我如何为它编写Java代码?有人能给出解决办法吗?我什么都没试过,因为我不知道


共 (2) 个答案

  1. # 1 楼答案

    这是一个粗略的提纲,让你开始:

    1. 创建一个简单的助手类,该类具有以下属性:LIN、QTY、Availability、Avail_Date
    2. 逐行阅读
    3. 创建助手类的新实例并将其放入ArrayList中
    4. 对于每一个线路呼叫拆分()
    5. 填写助手类的相应属性
    6. 如果检测到读取了新对象,请创建helper类的新实例
    7. 读取ArrayList上的文件循环后,在输出文件中写入一行

    只要试一下,如果你卡住了,就把代码发出去

  2. # 2 楼答案

     String[] colName = {"LIN","QTY","Availability","Avail_Date"};
        String output = "";
    
        int colNum = 0;
    
        // Using file handling read row one by one (readUTF method) : this is sudo code only
        // or you can use the CSV parser
        while(!EOF)
        {
    
          // spilt key and value using ","
    
           for(int i = colNum;i<colName.length;i++){
    
             if(colName[i].equals(key)){
                output = output  + value + ","
                break;
             }else{
                 output = output  ","
             }
    
           }
           colNum = i;
    
           if(colNum == colName.length ){
              output = output  "\n";
              colNum = 0;
           }
    } // end while
    

    我还没有运行这个代码。所以可能需要一些小的改变