Java中的注释有//和/**/两种
不考虑嵌套,如何将程序中的注释打印出来啊?

解决方案 »

  1.   

    用正则表达式吧,先把代码读到一个字符串里,然后逐个匹配符合模式的。大概是这个样子的:package app;import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test { /**
     * @param args
     * @throws FileNotFoundException
     */
    public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(new File(
    "/home/cherry/workspace/demo/src/app/Test.java"));
    StringBuffer sb = new StringBuffer();
    while (sc.hasNextLine()) {
    sb.append(sc.nextLine());
    sb.append("\n");// linux系统中的换行符,如果是windows,则改为"\r\n"
    } String input = sb.toString();
    // System.out.println(input);
    String regex1 = "//.+?\\n";// 匹配行注释
    String regex2 = "/\\*.+?\\*/";// 匹配块注释
    String regex=regex1+"|"+regex2;//两种模式取并集
    Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
    Matcher matcher = pattern.matcher(input); while (matcher.find()) {
    System.out.println(matcher.group());
    }
    }
    }
      

  2.   


    /**
     *
     */
    这种方法是显示出javadoc文档的。
      

  3.   

    已经编译的 .class 文件是不包含注释的。注释只能从 .java 源文件中提取。不过提取的方式比较复杂。
      

  4.   

    String regex1 = "//.+?\\n";// 匹配行注释
    其中的?号是什么意思,不明白,请大侠解释一下?
    还有就是文件中如果有像【String regex1 = "//.+?\\n";// 匹配行注释】这一行的代码时,回显示这样://.+?\\n";// 匹配行注释,这种情况是不正确的,不知怎么样子修改?
      

  5.   


    ?号表示非贪婪匹配:模式满足条件就停止,如果不加问号则匹配尽可能多个。比如字符串abccc,那么a.+?c匹配abc,而a.+c则匹配整个字符串abccc。
    第2个还没想好,呵呵。