Java代码实现,一行一行地输入代码,利用正则表达式删除代码的注释部分
时间: 2023-07-10 10:14:16 浏览: 99
清除Java代码注释
以下是Java代码实现,可以一行一行地输入代码并利用正则表达式删除注释部分:
```java
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileNotFoundException;
public class RemoveComments {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 获取输入文件名
System.out.print("请输入要处理的文件名:");
String filename = input.nextLine();
// 打开输入文件
File inputFile = new File(filename);
Scanner fileInput = null;
try {
fileInput = new Scanner(inputFile);
} catch (FileNotFoundException e) {
System.out.println("找不到文件 " + filename);
System.exit(1);
}
// 获取输出文件名
System.out.print("请输入输出文件名:");
String outputFilename = input.nextLine();
// 打开输出文件
PrintWriter output = null;
try {
output = new PrintWriter(outputFilename);
} catch (FileNotFoundException e) {
System.out.println("无法创建输出文件 " + outputFilename);
System.exit(1);
}
// 定义注释正则表达式
String commentRegex = "(?://.*)|(/\\*[\\s\\S]*?\\*/)";
// 逐行读取并处理输入文件
while (fileInput.hasNextLine()) {
String line = fileInput.nextLine();
String cleanLine = line.replaceAll(commentRegex, "");
output.println(cleanLine);
}
// 关闭文件和输入
fileInput.close();
output.close();
}
}
```
这里使用了一个正则表达式 `(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)`,它匹配了两种类型的注释:单行注释和多行注释。其中 `(?:\/\/.*)` 匹配以 `//` 开头的注释,`(?:\/\*(?:.|\n)*?\*\/)` 匹配 `/* */` 中的多行注释, `?` 表示非贪婪模式,确保正则表达式只匹配一次注释。
阅读全文