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

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");
     */
}
相关推荐
明天也要努力学习1 小时前
深入理解 JVM 垃圾回收(GC)
java·jvm
golang学习记1 小时前
IDEA 断点调试技巧:拖拽
java·ide·intellij-idea
Sayai1 小时前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算
计算机毕设定制辅导-无忧学长1 小时前
《基于物品协同过滤的闲置书换购微信小程序设计开发》
java·vue.js·spring boot·微信小程序·uniapp·闲置书换购微信小程序·物品协同过滤算法
Best_Liu~1 小时前
SpringBoot全局日期格式化
java·spring boot·后端
少年的范儿1 小时前
IntelliJ IDEA 配置 JDK 21 与 Maven 教程(Windows):开发环境配置与验证
java·jdk·maven·intellij idea
RuoyiOffice1 小时前
SpringBoot3 + openGauss:RuoYi Office 登录、流程发布与用印填报适配实战
java·数据库·spring boot·opengauss·信创
Dwzun2 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
学长毕设10 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw11 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp