从Java中的txt文件扫描文本并抛出我不想要的部分

时间:2013-09-29 21:42:24

标签: java split

假设我有一个文本文件,如下所示:

"CarInLot KLM456 ND Meter4 120

 CarInLot VMK123 ME Moving 0

 CarInLot DKC003 WA Meter5 30

 Meter1 None 10

 Meter2 None 0

 Meter3 None 2

 Meter4 Yes 12"

然后我用

while (inputFile.hasNext())
  {
     // Read the next name.
     String friendName = inputFile.nextLine();

     String[] tokens = friendName.split(" ");
  }

要拆分它,但是我希望这些行在Car类中以CarInLot开头,并且行在Meter类中以Meter开头。 我怎样才能做到这一点?谢谢。

2 个答案:

答案 0 :(得分:1)

在你的while循环中,迭代标记并执行以下操作:

if (token[0].equals("CarInLot"))
{
    // do something

    // e.g. storing the variables
    // store token[i+1]
    // store token[i+2]
    // Etc..
} else if (token[0].equals("Meter"))
{
    // do something

    // e.g. storing the variables
    // store token[i+1]
    // store token[i+2]
    // Etc..
}

您可以将值存储在ArrayList或仅存储(2D?)array或类似内容......

答案 1 :(得分:0)

为每个接受每个数据作为参数的对象创建构造函数。然后检查[]的第一个索引以确定要创建的对象类型。创建对象并将其添加到相应类型的List

List<Meter> meters = new ArrayList<Meter>();
List<Car> cars = new ArrayList<Car>();

while (inputFile.hasNext())
{   
     String[] tokens = inputFile.nextLine().split(" ");

     if(tokens[0].equals("CarInLot")){
        cars.add(new Car(tokens[1], tokens[2], tokens[3], tokens[4]));
     }else if(tokens[0].equals("Meter")){
        meters.add(new Meter(tokens[1], tokens[2]));
     }
}