在Java中使用readlines时忽略标记

时间:2013-03-02 22:05:30

标签: java text readline

假设您有一个包含以下内容的txt文件:

<tag><info>George 34 Washington Professor 

Alexander 22 London Student

Jessica 18 Moscow Student<info><tag>

当您使用readline从文本文件中挖出参数时,如何忽略这些标记?

2 个答案:

答案 0 :(得分:1)

正则表达式有什么问题?

Scanner s = new Scanner(new File("file.txt"));
while (s.hasNext())
{
  String line = s.nextLine().replaceAll("<[^>]*>", "");
  System.out.println(line);
}

然而,上述内容不适用于分割为多行的标签,您必须做一些更复杂的事情:

Scanner s = new Scanner(new File("file.txt"));
boolean inTag = false;
while (s.hasNext())
{
  String lineTemp = s.nextLine();
  for (char c: line.toCharArray())
  {
    switch (c)
    {
      case '<': inTag = true; break;
      case '>': inTag = false; break;
      default:
        if (!inTag)
          sb.append(c);
    }
  }
  String line = sb.toString();
  System.out.println(line);
}

上述任何一个帐户都不会显示<>,只能指示标记的开头和结尾。

答案 1 :(得分:0)

您可以使用正则表达式从行中删除标记

String line = line.replaceAll("<.+?>", "");