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

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月14日
下一篇 2023年12月14日

相关推荐