我正在做一个家庭作业,我需要读取一个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; //评论或/ *评论* /
有人可以提供更好的方法吗?
答案 0 :(得分:6)
如果你想尝试除正则表达式之外的其他东西,那么一种可能性就是状态机。至少有五种状态:开始,在正常代码中,在//注释中,在/ * ... * /注释和停止。
从“开始”状态开始。每个状态处理输入,直到它变为使其切换到不同状态的某些东西。 Stop状态结束处理,进行任何必要的整理,例如关闭文件。
请记住,您需要处理格式错误的输入,以及偷偷摸摸的输入:
System.out.println("A Java comment may start with /* and finish with */");
我会留给你研究如何处理它。