gpt4 book ai didi

java - 如何编写一个java程序来过滤所有注释行并只打印java代码行?

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:51 25 4
gpt4 key购买 nike

我尝试使用正则表达式从我的文本文件中过滤单行和多行注释。我能够过滤所有评论,例如

//it works
/*
* welcome
*/
/* hello*/

但我无法删除以下评论

/*
sample
*/

这是我的代码:

import java.io.*;
import java.lang.*;


class TestProg
{
public static void main(String[] args) throws IOException {
removeComment();
}
static void removeComment() throws IOException
{
try {
BufferedReader br = new BufferedReader(new FileReader("d:\\data.txt"));
String line;
while((line = br.readLine()) != null){
if(line.contains("/*") && line.contains("*/") || line.contains("//")) {

System.out.println(line.replaceAll("(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)",""));
}
else if(line.contains("/*") || line.contains("*") || line.contains("*/")) {

continue;
}
else
System.out.println(line);
}
br.close();
}

catch(IOException e) {
System.out.println("OOPS! File could not read!");
}
}
}

请帮我解决这个...

提前致谢。

最佳答案

使用 javaparser您可以像此 PoC 中所示那样解决它。

删除所有评论

import japa.parser.JavaParser;
import japa.parser.ParseException;
import japa.parser.ast.CompilationUnit;
import japa.parser.ast.Node;
import java.io.File;
import java.io.IOException;

public class RemoveAllComments {

static void removeComments(Node node) {
for (Node child : node.getChildrenNodes()) {
child.setComment(null);
removeComments(child);
}
}

public static void main(String[] args) throws ParseException, IOException {
File sourceFile = new File("Test.java");
CompilationUnit cu = JavaParser.parse(sourceFile);
removeComments(cu);
System.out.println(cu.toString());
}
}

TestClass.java 用作示例输入源

/**
* javadoc comment
*/
class TestClass {

/*
* block comment
*/
static class Cafebabe {
}

// line comment
static interface Commentable {
}

public static void main(String[] args) {
}
}

输出到标准输出(将其存储在文件中由您决定)

class TestClass {

static class Cafebabe {
}

static interface Commentable {
}

public static void main(String[] args) {
}
}

关于java - 如何编写一个java程序来过滤所有注释行并只打印java代码行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com