1

我有一个文本文件,我想用 java.util.Scanner 阅读并解析内容。

文件如下所示:

对象数:5
描述 0 一些描述
:描述 1 一些描述
:更多对象描述 1:更多对象
描述 1
:更多对象描述 1
描述 2 一些对象描述 2
:更多对象描述2
描述 3 对象 3 的一些描述:对象 3
的更多描述
描述 4 对象 4 的一些描述:对象 4
的更多描述

我到目前为止有这个

  String pattern = "description";
  String pattern2 = ":";
  int romNummer = 0;
  fil = new Scanner(new File(filnavn));
  do{
      String input;
      input = fil.next();
      romNummer = fil.nextInt();
      String description = fil.nextLine();

      if(fil.hasNext(":")){
          input = fil.next();
          String description2 = fil.nextLine();
          description += description2;
      }
      if(fil.hasNext(":")){
          input = fil.next();
          String description2 = fil.nextLine();
          description2 += description2;
      }
      if(fil.hasNext(":")){
          input = fil.next();
          String description2 = fil.nextLine();
          description += description2;
      }

  }while (fil.hasNext(pattern)||fil.hasNext(pattern2));

我想要一个对象的所有描述作为一个字符串。使用扫描仪类是否有更优雅的方法?

4

2 回答 2

1

为什么不阅读每一行然后决定它是否是一个新的描述,或者如果第一个字符是 ':' 它将被附加到当前的描述中?

于 2013-11-06T12:08:54.623 回答
0

伪代码

fil = new Scanner(new File(filnavn));
String line = "",result="";
int number=0;
number = Integer.parseInt(fil.nextLine().split(":").[1].trim()); 
while(fil.hasNext())
{ 
    line = fil.nextLine();

    Check if line starts with "Description"
    {
         Print content
         remove "Description [number]" from line
         content += line;
    }
    Check if line starts with ":"
    {
         remove ":"
         content += line;
    }
}
于 2013-11-06T12:09:25.153 回答