我想解析csv,如下所示:


  12:50 AM,11.0,10.0,94,1013,10.0,NNW,14.8,-,不适用,,大多数
  多云,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的第十个元素,我没有得到任何不好的令牌响应。
如何获得所有元素的令牌?

问候

最佳答案

这是StringTokenizer类的预期行为。
您始终可以通过在拆分字符串之前添加以下行来强制程序返回某些内容,例如"***"空令牌。

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


在这种情况下,StringTokenizer将返回***而不是null

07-26 00:47