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

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");
     */
}
相关推荐
木鹅.4 小时前
LangChain4j
java
永远都不秃头的程序员(互关)4 小时前
Java核心技术精要:高效实践指南
java·开发语言·性能优化
CoderYanger5 小时前
动态规划算法-子序列问题(数组中不连续的一段):28.摆动序列
java·算法·leetcode·动态规划·1024程序员节
代码栈上的思考5 小时前
深入解析Spring IoC核心与关键注解
java·后端·spring
Mai Dang5 小时前
SpringBoot4用Swagger
java
geekmice6 小时前
实现一个功能:springboot项目启动将controller地址拼接打印到txt文件
java·spring boot·后端
老华带你飞6 小时前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
小石头 100866 小时前
【JavaEE】进程和线程的区别
java·java-ee
oioihoii7 小时前
C++对象生命周期与析构顺序深度解析
java·开发语言·c++