trueDamage(1)-去掉代碼中的塊級註釋

在分析源碼的時候看到了很多不必要的塊級註釋,因此萌生了自己寫一些小方法的念頭,說幹就幹,歡迎一起commit,各種各樣的方法,持續更新。

https://github.com/LSLWind/trueDamage

代碼分析

去掉塊級註釋

public static String blockAnnotationFiltering(String code)

    /**
     * 將代碼中的塊級註釋過濾掉
     * @param code 給定代碼
     * @return 塊級註釋過濾掉的代碼
     */
    public static String blockAnnotationFiltering(String code){
        //正則表達式匹配/**/
        String regex="/[*][\\s\\S]*?[*]/";//[\s\S]匹配任意字符,?爲非貪婪匹配
        Pattern pattern=Pattern.compile(regex,Pattern.MULTILINE);//多行匹配
        //匹配結果,根據結果記錄非/**/中的內容
        Matcher matcher=pattern.matcher(code);
        StringBuilder res=new StringBuilder();
        int left=0;
        while (matcher.find()){
            res.append(code, left, matcher.start());
            left=matcher.end()+1;//+1是爲了跳過換行符
        }
        res.append(code.substring(left));//最後仍然要匹配一次

        //去掉連續的換行符
        StringBuilder realRes=new StringBuilder();
        int ite=0;
        while (ite+1<res.length()){
            if(!(res.charAt(ite)=='\n'&&res.charAt(ite+1)=='\n')){//不是連續的換行則加上字符
                realRes.append(res.charAt(ite));
            }
            ite++;
        }
        return realRes.toString();
    }
    

測試,使用JUnit5:

    @org.junit.jupiter.api.Test
    void blockAnnotationFiltering() {
        Throwable throwable=new Throwable();//IDEA ctrl+shift+i然後ctrl+enter進入源碼,複製測試
        System.out.println(StringUtils.blockAnnotationFiltering(""));//太長了在這就不貼了
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章