【问题标题】:Reading and parsing a file with java.util.scanner使用 java.util.scanner 读取和解析文件
【发布时间】:2023-03-07 01:32:01
【问题描述】:

我有一个文本文件,我想用 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));

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

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

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

    【讨论】:

    • 带有 : 的行表示它已附加到当前描述中。我试图逐行阅读并确定它是否是新的描述,但无法让它发挥作用。
    【解决方案2】:

    伪代码

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2016-03-14
      • 1970-01-01
      • 2013-06-05
      • 2013-02-08
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多