我有一个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。
谢谢!
答案 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