正则表达式删除注释和多余换航

java注释有单行注释和多行注释,分别进行匹配

  1. 正则匹配多行注释\s*/\*(?:.|\n)*?\*/
  2. 正则匹配单行注释//.*

提取成一个方法:

kotlin 复制代码
/**移除注释和多余换行*/
fun replaceComment(s: String): String{
    return """\s*/*(?:.|\n)*?*/""".toRegex().replace(s,"").let {
        """//.*""".toRegex().replace(it,"")
    }.let {
        """(?:\s*\n){2,}""".toRegex().replace(it,"\n")
    }
}

在java编码中,有很多枚举类碍于规范定义很多值相同的冗余字段,也可以通过正则表达式简化

kotlin 复制代码
/**如果一个枚举类有,code,englishName,chineseName,description四个字段,
 * 且枚举类的name,code,englishName一样,且chineseName和description一样,
 * 就简化枚举类为name(description)格式*/
fun enumCodeAndEngNameIsSame(s: String){
    val res = ArrayList<String>()
    s.split("\n").forEach {
        val s = """([A-Z]\w*)\s*?(\s*?"\1"\s*?,\s*?"\1"\s*?,\s*?"((?:[^"]*))"\s*?,\s*?"\2"\s*)\s*[,;]""".toRegex().find(it)
        if (s!=null){
            res.add("""${s.groups[1]?.value}("${s.groups[2]?.value}")""")
        }
        else if (it.isNotBlank()){
            throw RuntimeException("$it >> Code != EnglishName || ChineseName != Description")
        }
    }
    println(res.joinToString(separator = ",\n")+";")
}

测试代码

kotlin 复制代码
/**测试删除枚举类冗余字段和注释及多余换行*/
fun main() {
    val code = """/**顶部注释1*/
    /**注释2*/
    E1("E1","E1","枚举E1","枚举E1" /*行内注释*/),//行尾注释
    
    
    /**
    * 注释3
    XXX
    //
    */
    //注释4
    
    /** 信披敏感数据*/
    E2("E2","E2","枚举E2","枚举E2"   );"""

    enumCodeAndEngNameIsSame(replaceComment(code))
    /*输出:
    E1("枚举E1"),
    E2("枚举E2");
     */
}
相关推荐
JH30736 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_7 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble7 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟8 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖8 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707539 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.9 小时前
Day06——权限认证-项目集成
java
瑶山9 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy9 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法