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

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");
     */
}
相关推荐
那个松鼠很眼熟w1 小时前
1.多线程基础概念
java
聪明的笨猪猪1 小时前
Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
懒惰蜗牛2 小时前
Day27 | Java集合框架之List接口详解
java·后端·java-ee·list
nsjqj2 小时前
数据结构:Map 和 Set (二)
java·开发语言·数据结构
迎風吹頭髮2 小时前
UNIX下C语言编程与实践18-UNIX 文件存储原理:目录、i 节点、数据块协同存储文件的过程
java·c语言·unix
nlog3n3 小时前
分布式排行榜系统设计方案
java·分布式
EnCi Zheng3 小时前
Java_钻石操作符详解
java·开发语言
Ytadpole3 小时前
性能革命的底层逻辑:深入理解 Spring Cloud Gateway 的 Reactor 核心
java·spring·gateway·reactor·响应式编程·cloud
Vahala0623-孔勇3 小时前
微服务网关深度设计:从Spring Cloud Gateway到Envoy,流量治理与安全认证实战指南
java·安全·微服务·云原生