【问题标题】:Parse data from text file in Java用Java从文本文件中解析数据
【发布时间】:2014-09-09 02:43:35
【问题描述】:

我正在尝试用 Java 创建一个解析器,它可以帮助我从文本文件中获取一些详细信息。

文件中的数据看起来像这样,但条目更多:

. 
http://www.someurl1.com/
PERSONAL ADDRESS: Mozart, W.A.; Some address 1, Austria; email: mymail1@mail.com

. 
http://www.someurl2.com/
PERSONAL ADDRESS: Beethoven, L.V.; Some address 2, Germany; email: mymail2@mail.com

如您所见,数据始终遵循一种模式,而我想要获得的只是每个条目的名称和电子邮件。一个可能的好的输出是这样的:

Mozart, W.A. ; mymail1@mail.com
Beethoven, L.V. ; mymail2@mail.com

每个条目都以. 开头,后跟第一行的空格。然后在点上方的下一行中,有 URL。在下一行中,还有更多数据:姓名、地址和电子邮件,均以; 分隔。

这并不难,但我在开始时遇到了一些麻烦。我创建了一个 Main 类,在其中我将文本文件读取到 String。但是我真的不知道在 Java 中解析此类内容的最佳方法是什么,如果我应该尝试使用正则表达式或只是寻找;

【问题讨论】:

  • 我首先创建了一个 Main 类,在该类中我将文件读入一个字符串。但是我不知道如何解析它,我应该使用正则表达式还是只是简单地用“硬”的方式来做。
  • @gd.silva 请用您已经尝试过的内容更新您的问题。
  • 如果您尝试过某事并遇到问题,您可以在此处发布。除非您有一些复杂的要求,否则应该非常简单。使用文件阅读器读取每一行并根据分隔符拆分为列表,然后使用列表中需要的任何数据。

标签: java parsing


【解决方案1】:

逐行读取文本文件,然后根据该行执行操作。

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
   // process the line.
   if (line.equals(". "))
   {
       // Do something with first line
       line = br.readLine()
       // Do something with second line
       line = br.readLine()
       // Split up the third line by space 
       String split[]= StringUtils.split(line); // split[1] = "Mozart," so you may need to do a little more work there
   }
}
br.close();

【讨论】:

    【解决方案2】:

    使用拆分字符串作为名称很容易,然后使用正则表达式捕获电子邮件部分! 例子很多,这里是其中之一

    \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多