簡體   English   中英

如何解析java中具有一些空值的csv文件

[英]how to parse a csv file which has some null value in java

我想解析csv如下:

12:50 AM,11.0,10.0,94,1013,10.0,NNW,14.8, - ,N / A ,,多雲,330,2011-10-27 23:50:00

為了解析它我使用如下代碼:

while((mylines = rdr.readLine()) != null)
        {   
            Pattern p = Pattern.compile("<br />");
            mylines=mylines.replaceAll("<br />", "");
            System.out.println(mylines);
            StringTokenizer st = new StringTokenizer(mylines , ",");
            while(st.hasMoreTokens())
            {
                System.out.println(st.nextToken());
            }
        }

對於我稱之為Null的第10個元素,我沒有得到任何不好的令牌響應。 我怎樣才能獲得所有元素的標記?

問候

這是StringTokenizer類的預期行為。 您可以通過在拆分字符串之前添加以下行來強制您的程序返回一些東西,例如"***" ,例如空標記:

mylines=mylines.replaceAll(",,", ",***,");

在這種情況下, StringTokenizer將返回***而不是null

如果您習慣使用第三方庫,請使用Apache的commons-lang並嘗試使用StringUtils.splitPreserveAllTokens() - 請參閱API文檔

在第十名的位置,你有,, ,這是一個空字符串,在Java中由空值表示。 為了避免打印空值,請執行類似的操作

String str;
if((str = st.nextToken())!=null) {
  System.out.println(str);
} else {
  //print nothing or maybe a newline
}

嗨這里是一個簡單的測試用例,它解析該行並為您提供所有元素,包括空元素:

package com.sg2net.test;

public class TestSplit {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String[] data="12:50 AM,11.0,10.0,94,1013,10.0,NNW,14.8,-,N/A,,Mostly Cloudy,330,2011-10-27 23:50:00§".split(",");
        //String[] data="valore##valore1".split("##");
        System.out.println(data.length);
        if (data.length>0) {
            int i=1;
            for (String element : data) {
                if (element==null || element.length()==0) {
                    System.out.println("empty element at position " + i);
                }
                System.out.println(element);
                i++;
            }
        }

    }

}

而不是null,查找長度> 0的標記。在Java中,值null與空字符串不同。

ostermiller.org有一個包含很好的實用程序類的jar ,比如CSV-Parser / Writer等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM