我正在做一个家庭作业,我需要读取一个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
Run Code Online (Sandbox Code Playgroud)
结果
class Student {
int studentId;
String studentName;
String junk = "Hello//hello/*hey";
}
Run Code Online (Sandbox Code Playgroud)
我的想法是阅读每一行
1)检查前两个字符
如果以// ==>开头,则删除该行
如果它以/*==>开头删除所有行直到*/
2)另一种情况是处理
示例 - int studentId; //评论或/*评论*/
有人可以提供更好的方法吗?
如果你想尝试除正则表达式之外的其他东西,那么一种可能性就是状态机.至少有五种状态:开始,在正常代码中,在//注释中,在/*...*/注释和停止.
从"开始"状态开始.每个状态处理输入,直到它变为使其切换到不同状态的某些东西.Stop状态结束处理,进行任何必要的整理,例如关闭文件.
请记住,您需要处理格式错误的输入,以及偷偷摸摸的输入:
System.out.println("A Java comment may start with /* and finish with */");
Run Code Online (Sandbox Code Playgroud)
我会留给你研究如何处理它.