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 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿