Java實現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例
一.需求背景
1.背景
駝峰和下劃線互轉(zhuǎn)場景是在不同命名規(guī)范的情況下,需要進行字段名稱的轉(zhuǎn)換。例如,Java 中使用駝峰命名規(guī)范,而數(shù)據(jù)庫表字段通常使用下劃線命名規(guī)范。
2.實現(xiàn)方式
- 使用 GuavaAPI 實現(xiàn)
- 使用 hutool 工具類實現(xiàn)
- 使用自定義的工具實現(xiàn)
- 使用正則表達式實現(xiàn)
3.注意事項
對于駝峰和下劃線的互轉(zhuǎn),需要注意以下幾點:
- 確定轉(zhuǎn)換方向:在進行駝峰和下劃線的互轉(zhuǎn)時,首先需要確定是將駝峰轉(zhuǎn)為下劃線,還是將下劃線轉(zhuǎn)為駝峰。
- 字符串格式:要進行駝峰和下劃線的轉(zhuǎn)換,需要保證字符串的格式符合規(guī)范。駝峰命名法中,單詞間沒有分隔符,首字母小寫;下劃線命名法中,單詞間使用下劃線分隔,全小寫。
- 字符串處理:對于將駝峰轉(zhuǎn)為下劃線,可以使用正則表達式或字符串處理方法,將大寫字母前插入下劃線,并將字符串轉(zhuǎn)為小寫。對于將下劃線轉(zhuǎn)為駝峰,可以使用字符串處理方法,將下劃線后的字母轉(zhuǎn)為大寫,并去掉下劃線。
- 命名規(guī)范:在進行駝峰和下劃線的互轉(zhuǎn)時,要遵循統(tǒng)一的命名規(guī)范,以保證代碼的可讀性和一致性。
- 注意沖突:在進行駝峰和下劃線的互轉(zhuǎn)時,要注意可能存在的命名沖突。有些字符串可能無法準(zhǔn)確轉(zhuǎn)換為駝峰或下劃線命名,可能會引起命名沖突或歧義。
在進行駝峰和下劃線的互轉(zhuǎn)時,要謹(jǐn)慎處理,遵循規(guī)范,確保轉(zhuǎn)換的準(zhǔn)確性和可靠性。
二.實現(xiàn)方式
1.Guava 實現(xiàn)
Gauva:
//駝峰轉(zhuǎn)下劃線 String ans = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "helloWorld"); System.out.println(ans); //下劃線轉(zhuǎn)駝峰 String ans2 = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world"); System.out.println(ans2);
實戰(zhàn):
//排序:駝峰轉(zhuǎn)下劃線 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 實現(xiàn)
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)"); /** * 駝峰轉(zhuǎn)下劃線 * @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(); } /** * 下劃線轉(zhuǎn)駝峰 * @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 中的使用下劃線和駝峰互轉(zhuǎn)
- map-underscore-to-camel-case 設(shè)置為 true
mybatis-plus: configuration: map-underscore-to-camel-case: true
到此這篇關(guān)于Java實現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例的文章就介紹到這了,更多相關(guān)Java 駝峰下劃線互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?AI借助全局參數(shù)實現(xiàn)智能數(shù)據(jù)庫操作與個性化待辦管理
這篇文章主要介紹了Spring?AI借助全局參數(shù)實現(xiàn)智能數(shù)據(jù)庫操作與個性化待辦管理,本文給大家介紹的非常詳細,需要的朋友可以參考下2024-11-11Java深入學(xué)習(xí)圖形用戶界面GUI之布局管理器
本文章向大家介紹Java GUI布局管理器,主要包括布局管理器使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下2022-05-05SpringBoot如何通過自定義注解實現(xiàn)權(quán)限檢查詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot如何通過自定義注解實現(xiàn)權(quán)限檢查的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10關(guān)于MybatisPlus配置雙數(shù)據(jù)庫驅(qū)動連接數(shù)據(jù)庫問題
這篇文章主要介紹了MybatisPlus配置雙數(shù)據(jù)庫驅(qū)動連接數(shù)據(jù)庫的具體實現(xiàn),具體的業(yè)務(wù)邏輯,在service層的類或者方法上面添加@DataSource注解來指定該業(yè)務(wù)需要用到的數(shù)據(jù)源,需要的朋友可以參考下2022-01-01