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

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 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
天远API1 小时前
零信任架构实战:基于天远单人婚姻查询构建自动化联合贷款审计网关
java·人工智能·架构·自动化
九皇叔叔1 小时前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base
黑马程序员毕设2 小时前
基于微信小程序的节目活动报名与管理系统设计与实现
java·开发语言·spring boot·后端·电脑
小坏讲微服务2 小时前
Spring AI 高频面试题20道
java·spring·ai·agent·springai
Bs_MoneyMagnet2 小时前
基于springboot+vue的会议室预约管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
sunshine22 girl2 小时前
Java学习 java原理
java·开发语言·学习
Bs_MoneyMagnet2 小时前
基于springboot+vue的茶铺管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
她说..2 小时前
RabbitMQ 使用场景详解
java·spring boot·后端·spring·rabbitmq·java-rabbitmq
宁渡AI大模型2 小时前
河南宁渡科技有限公司|宁渡课堂 AI 全栈面试分享,AI 应用开发高频考点汇总
java·c++·人工智能·python·深度学习·神经网络·rag