weixin_42450175 2011-04-28 12:32
浏览 336
已采纳

java怎样用正则表达式匹配文档注释,如“/**@date 2012-1-2*/”?

现在想做个把文件的文档注释删除的东西?不知道java怎样用正则表达式来匹配,请各位帮忙

  • 写回答

5条回答 默认 最新

  • turing-complete 2011-04-28 14:52
    关注

    写了个例子,你可以参照下
    [code="java"]
    package iteyeQuestions;

    /*

    • java怎样用正则表达式匹配文档注释,如“斜杠**@date 2012-1-2*斜杠”?
    • 现在想做个把文件的文档注释删除的东西?不知道java怎样用正则表达式来匹配,请各位帮忙 */

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;

    public class RidNotation {

    //待处理代码文档输入流
    private BufferedReader br;
    //待处理代码文档输出流
    private PrintWriter pw;
    
    //构造方法
    public RidNotation(String inputUrl,String outputUrl) throws IOException{
        this.br= new BufferedReader(new FileReader(new File(inputUrl)));
        this.pw= new PrintWriter(new BufferedWriter(new FileWriter(outputUrl)));;
    }
    
    //去文档型注册的方法
    public void ridDocType() throws IOException{
        String temp=null;
        boolean isNotation=false;
        while (this.br.ready()) {
            temp=this.br.readLine();
            int start=0;
            int end=0;
            if(isNotation){
                if((end=temp.indexOf("*/"))==-1){
                    continue;
                }else{//找到注释结束标志
                    int anotherStart=0;
                    if((anotherStart=temp.substring(end).indexOf("/**"))==-1){
                        isNotation=false;//此后为代码段
                        this.pw.println(temp.substring(end+2));//把本行剩余的代码输出
                    }else{//又在本行内找到另一个开始标志,输出中间代码
                        this.pw.println(temp.substring(end+2,anotherStart));
                    }
                }
            }else{
                if((start=temp.indexOf("/**"))==-1){
                    this.pw.println(temp);
                }else{//找到注释开始标志
                    if((end=temp.substring(start).indexOf("*/"))==-1){
                        isNotation=true;//此后为注释段
                        this.pw.println(temp.substring(0,start));
                    }else{//此行内同时含有注释结尾标志
                        this.pw.println(temp.substring(0,start)+temp.substring(end+2));
                    }
                }
            }
        }
        this.br.close();
        this.pw.close();
    }
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //测试代码
        new RidNotation("RidNotation.java","outttt.txt").ridDocType();
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗