删除没有正则表达式的java代码中的所有注释

时间:2017-02-16 21:04:03

标签: java java-8

我正在做一个家庭作业,我需要读取一个java源文件并从中删除所有注释。其余的造型应该保持不变。

我已经使用正则表达式完成了任务。

但我希望在不使用正则表达式的情况下完成同样的工作。

示例输入

// My first single line comment

class Student {

  /* Student class - Describes the properties
  of the student like id, name */

  int studentId; // Unique Student id
  String studentName; // Name of the student
  String junk = "Hello//hello/*hey";

} // End of student class

结果

class Student {

  int studentId;
  String studentName;
  String junk = "Hello//hello/*hey";

}

我的想法是阅读每一行

1)检查前两个字符

  • 如果以// ==>开头删除行

  • 如果以/ * ==>开头删除所有行直到* /

2)另一种情况是处理

示例 - int studentId; //评论或/ *评论* /

有人可以提供更好的方法吗?

1 个答案:

答案 0 :(得分:6)

如果你想尝试除正则表达式之外的其他东西,那么一种可能性就是状态机。至少有五种状态:开始,在正常代码中,在//注释中,在/ * ... * /注释和停止。

从“开始”状态开始。每个状态处理输入,直到它变为使其切换到不同状态的某些东西。 Stop状态结束处理,进行任何必要的整理,例如关闭文件。

请记住,您需要处理格式错误的输入,以及偷偷摸摸的输入:

System.out.println("A Java comment may start with /* and finish with */");

我会留给你研究如何处理它。