【高效开发工具系列】驼峰下划线互转

news2024/12/25 13:20:26

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.需求背景
      • 1.背景
      • 2.实现方式
      • 3.注意事项
    • 二.实现方式
      • 1.Guava 实现
      • 2.hutool 实现
      • 3.自定义
      • 4.mybatis-plus

一.需求背景

1.背景

驼峰和下划线互转场景是在不同命名规范的情况下,需要进行字段名称的转换。例如,Java 中使用驼峰命名规范,而数据库表字段通常使用下划线命名规范。

2.实现方式

  • 使用 GuavaAPI 实现
  • 使用 hutool 工具类实现
  • 使用自定义的工具实现
  • 使用正则表达式实现

3.注意事项

对于驼峰和下划线的互转,需要注意以下几点:

  1. 确定转换方向:在进行驼峰和下划线的互转时,首先需要确定是将驼峰转为下划线,还是将下划线转为驼峰。
  2. 字符串格式:要进行驼峰和下划线的转换,需要保证字符串的格式符合规范。驼峰命名法中,单词间没有分隔符,首字母小写;下划线命名法中,单词间使用下划线分隔,全小写。
  3. 字符串处理:对于将驼峰转为下划线,可以使用正则表达式或字符串处理方法,将大写字母前插入下划线,并将字符串转为小写。对于将下划线转为驼峰,可以使用字符串处理方法,将下划线后的字母转为大写,并去掉下划线。
  4. 命名规范:在进行驼峰和下划线的互转时,要遵循统一的命名规范,以保证代码的可读性和一致性。
  5. 注意冲突:在进行驼峰和下划线的互转时,要注意可能存在的命名冲突。有些字符串可能无法准确转换为驼峰或下划线命名,可能会引起命名冲突或歧义。

在进行驼峰和下划线的互转时,要谨慎处理,遵循规范,确保转换的准确性和可靠性。

二.实现方式

1.Guava 实现

Gauva:

//驼峰转下划线
String ans = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "helloWorld");
System.out.println(ans);
//下划线转驼峰
String ans2 = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world");
System.out.println(ans2);

实战:

//排序:驼峰转下划线
String sortname = query.getSortname();
if (StringUtils.isNotEmpty(sortname)) {
    try {
        BrandStoreSkuInvSalRateWeekDTO.class.getField(sortname);
        sortname = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sortname);
        query.setSortname(sortname);
    } catch (NoSuchFieldException e) {
        log.error("排序字段不存在,排序字段为{}", sortname);
        query.setSortname(null);
    }
}

2.hutool 实现

Hutool:

String ans = StrUtil.toCamelCase("hello_world");
System.out.println(ans);
String ans2 = StrUtil.toUnderlineCase("helloWorld");
System.out.println(ans2);

3.自定义

工具类:

public class ColumnUtil {
    private static Pattern humpPattern = Pattern.compile("[A-Z]");
    private static Pattern linePattern = Pattern.compile("_(\\w)");
    /**
     * 驼峰转下划线
     * @param str
     * @return
     */
    public static String humpToLine(String str) {
        Matcher matcher = humpPattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
    /**
     * 下划线转驼峰
     * @param str
     * @return
     */
    public static String lineToHump(String str) {
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
}

4.mybatis-plus

  • mybatis-plus 中的使用下划线和驼峰互转
  • map-underscore-to-camel-case 设置为 true
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 yum安装redis

1.安装epel源 yum install epel-release -y 2.安装 参数-y是遇到yes/no时 自动yes yum install redis -y 3.查看redis安装的位置 whereis redis 4.打开配置文件 vim /etc/redis.config 5.修改密码 在打开的文件中输入 /requirepass 后按下确认键,(找下一个关…

常见的攻击防护

只做模拟机器使用,不使用真实机器 目录 一、 DHCP饿死和防护应对措施.................................. 1 1, 实验拓扑:...................................................... 2 2, 实验配置............................…

Web网页安全策略的研究及其实现方案

摘 要 越来越多的人使用电脑来接触互联网,事实上,使用Web技术的实现基于网络的不断完善和发展的交流网站,人们可以利用计算机网络技术,方便得到想要的任何信息。计算机网络的发展,也促进了相关产业的发展,…

C++11【下】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻 新的类功能类成员变量初始…

【pytorch】从yolo的make_grid理解torch.meshgrid、torch.stack

文章目录 简述1、torch.meshgrid 创建行列坐标2、torch.stack 结合行列坐标3、通过view函数扩展维度 简述 yolo检测 make_grid创建网格代码如下,那么什么是torch.meshgrid? def _make_grid(nx20, ny20):yv, xv torch.meshgrid([torch.arange(ny), torch.arange(…

三 STM32F4使用Sys_Tick 实现微秒定时器和延时

更多细节参考这篇 1. 什么是时钟以及作用 1.1 什么是时钟 时钟是由电路产生的周期性的脉冲信号,相当于单片机的心脏 1.2 时钟对于STM32的作用 指令同步:cpu和内核外设使用时钟信号来进行指令同步数据传输控制: 时钟信号控制数据在内部总…

CSS新手入门笔记整理:CSS图片样式

图片大小 语法 width:像素值; height:像素值; 图片边框:border 语法 边框:宽度值 样式值 颜色值; border:1px solid red; 图片对齐 水平对齐:text-align 语法 text-align:取值; 属性值 说明 left 左对齐(默认值) cent…

【Java Web学习笔记】 1 - HTML入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如,标题字体、…

go学习之goroutine和channel

文章目录 一、goroutine(协程)1.goroutine入门2.goroutine基本介绍-1.进程和线程说明-2.程序、进程和线程的关系示意图-3.Go协程和Go主线程 3.案例说明4.小结5.MPG模式基本介绍6.设置Golang运行的CPU数7.协程并发(并行)资源竞争的问题8.全局互斥锁解决资…

【渗透】记录阿里云CentOS一次ddos攻击

文章目录 发现防御 发现 防御 流量清洗 使用高防

acwing算法基础之动态规划--数位统计DP、状态压缩DP、树形DP和记忆化搜索

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1:求a~b中数字0、数字1、…、数字9出现的次数。 思路:先计算1~a中每位数字出现的次数,然后计算1~b-1中每位数字出现的次数,两个相减即…

YOLOv8优化策略:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.SENetV2 论文:https://arxiv.org/…

java:springboot3集成swagger(springdoc-openapi-starter-webmvc-ui)

背景 网上集成 swagger 很多都是 Springfox 那个版本的,但是那个版本已经不更新了,springboot3 集成会报错 Typejavax.servlet.http.HttpServletRequest not present,我尝试了很多才知道现在用 Springdoc 了,今天我们来入门一下 …

2023-12-02 LeetCode每日一题(拼车)

2023-12-02每日一题 一、题目编号 1094. 拼车二、题目链接 点击跳转到题目位置 三、题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组 trips , trip[i] …

国际语音群呼系统

随着海外电话营销的发展,越来越多的出海企业通过国际语音群呼系统打开出海营销之路。企业出海营销运营,选择一个安全、高效、便捷的国际语音群呼系统非常重要。 一、什么是国际语音群呼系统? 国际语音群呼是指通过语音的方式批量向海外用户传…

一进三出宿舍限电模块的改造升级

一进三出宿舍限电模块改造升级石家庄光大远通电气有限公司智能模块功能特点: 电能控制功能:可实施剩余电量管理,电量用完时将自动断电; 剩余电量可视报警提示功能:剩余电量可视,并当电量剩余5度时&#xff…

cpu版本的torch可以用清华镜像源安装

一、来到pytroch官网找到如下代码 官方提供的默认的安装cpu版本的torch的命令 pip3 install torch torchvision torchaudio二、使用清华镜像安装 pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

力扣题:字符串的反转-11.24

力扣题-11.24 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:151. 翻转字符串里的单词 解题思想:保存字符串中的单词即可 class Solution(object):def reverseWords(self, s):""":type s: str:rtype: str"&quo…

项目实战-编写ssm整合配置文件

1、父工程pom.xml <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>…

继承 和 多肽(超重点 ! ! !)

[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0…