每天一个实战小技巧:驼峰与下划线划转
这个考题非常实用,特别是对于我们这些号称只需要CURD的后端开发来说,驼峰与下划线互转,这不是属于日常任务么;一般来讲db中的列名,要求是下划线格式(why? 阿里的数据库规范是这么定义的,就我感觉驼峰也没毛病),而java实体命名则是驼峰格式,所以它们之间的互转,就必然存在一个驼峰与下划线的互转
今天我们就来看一下,这两个的互转支持方式
1. Gauva
一般来讲遇到这种普适性的问题,大部分都是有现成的工具类可以来直接使用的;在java生态中,说到好用的工具百宝箱,guava可以说是排列靠前的
接下来我们看一下如何使用Gauva来实现我们的目的
1 | // 驼峰转下划线 |
在这里主要使用的是CaseFormat
来实现互转,guava的CaseFormat还提供了其他几种方式
上面这个虽然可以实现互转,但是如果我们有一个字符串为 helloWorld_Case
将其他转换输出结果如下:
- 下划线:
hello_world__case
- 驼峰:
helloworldCase
这种输出,和标准的驼峰/下划线不太一样了(当然原因是由于输入也不标准)
2. Hutool
除了上面的guava,hutool的使用也非常广,其中包含很多工具类,其StrUtil
也提供了下划线与驼峰的互转支持
1 | String ans = StrUtil.toCamelCase("hello_world"); |
同样的我们再来看一下特殊的case
1 | System.out.println(StrUtil.toCamelCase("helloWorld_Case")); |
输出结果如下
- 驼峰:
helloworldCase
- 下划线:
hello_world_case
相比较上面的guava的场景,下划线这个貌似还行
3. 自定义实现
接下来为了满足我们希望转换为标砖的驼峰/下划线输出方式的需求,我们自己来手撸一个
下划线转驼峰:
- 关键点就是找到下划线,然后去掉它,下一个字符转大写续上(如果下一个还是下划线,那继续找下一个)
根据上面这个思路来实现,如下
1 | private static final char UNDER_LINE = '_'; |
驼峰转下划线
- 关键点:大写的,则前位补一个下划线,当前字符转小写(如果前面已经是一个下划线了,那前面不补,直接转小写即可)
1 | public static String toUnderCase(String name) { |
再次测试helloWorld_Case
,输出如下
- 驼峰:
helloWorldCase
- 下划线:
hello_world_case
系列博文
II. 其他
1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog