在Java中解析分号分隔的文件

时间:2014-07-24 00:20:38

标签: java excel

我有一个excel文件,内容如下所示。 第一行是标题,第二行是病房的数据。

Cell A1 contains line below (Header)
**IsShooting; Velocity; Location_x; Location_y; Location_z; Onslaught_ONSAV ; ***Event***; EventParams...**

Cell A2 contains below
0;0;0;0;0;0;0;0;0;0;0.000;0.000;0;0.000;0.000;None;0;0;0.000;-1983.610;-

Cell A3 Contains below
;0.250;0.000;0.000;0.000;0.000;***BOT_KILLED***;CTF-Geothermal.GBxBot10;XWeapons.DamTypeFlakChunk

Cell A4 Contains below
4.110;161.900;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;0.000;4.320;0.000;0.260;0.000;0.000;***FLAG_PICKEDUP***;0;CTF-Geothermal.GBxBot10

我想知道是否有任何开源CSV解析器,我可以这样使用,我可以从excel中获取数据。

上述excel文件包含400行数据。我想要的就是FLAG_PICKEDUP&的COUNT。 BOT_KILLED。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是我能想到的最简单的方法。使用BufferedReader读取每一行。对于每一行将其拆分为一个String数组,然后检查每个String以查看它是否等于定义标记拾取或机器人杀死的常量。

我认为Apache制作csv解析器,但我从未使用它。对于这样简单的事情,它可能更容易自己编码。这是我在约5分钟内提出的。

注意:所有应有的尊重,stackoverflow通常会要求您首先尝试自己解决问题。由于您没有发布代码,我们无法帮助您进行调试,我们也不知道您是否尝试自行解决问题。这很简单,所以我帮助了你,但如果你先发布(失败的)解决方案,你可能会觉得更容易获得支持。

public static void main(String[] args) throws Exception
{
        int botKilledCount = 0, flagPickedUpCount = 0;
        String line, botLiteral = "***BOT_KILLED***", flagLiteral = "***FLAG_PICKEDUP***";
        BufferedReader reader = new BufferedReader(new FileReader(new File("!!YOUR FILE HERE!!")));
        while ((line = reader.readLine()) != null)
            for (String s : line.split(";"))
                if (s.equals(botLiteral))
                    botKilledCount++;
                else if (s.equals(flagLiteral))
                    flagPickedUpCount++;

        System.out.println("Bot Killed Count: " + botKilledCount + ", Flag Pickup Count: " + flagPickedUpCount);
}

这是输出:

Bot Killed Count: 1, Flag Pickup Count: 1