Java實(shí)現(xiàn)字符串轉(zhuǎn)為駝峰格式的方法詳解
字符串轉(zhuǎn)為駝峰格式 構(gòu)建工具類
package com.yt.common.util; import com.yt.common.dto.NameCode; import com.yt.exam.enums.ZyEnum; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 字符串轉(zhuǎn)為駝峰格式 構(gòu)建工具類 * @author LYY * @date 2022/07/06 */ public class RegexUtils { private static Pattern UNDERLINE_PATTERN = Pattern.compile("_([a-z])"); public static void main(String[] args) { List<NameCode> nameCode = ZyEnum.getfield(); for (int i = 0; i <nameCode.size() ; i++) { System.out.println(underlineToHump(nameCode.get(i).getField())); } } public static String underlineToHump (String str){ //正則匹配下劃線及后一個(gè)字符,刪除下劃線并將匹配的字符轉(zhuǎn)成大寫(xiě) Matcher matcher = UNDERLINE_PATTERN.matcher(str); StringBuffer sb = new StringBuffer(str); if (matcher.find()) { sb = new StringBuffer(); //將當(dāng)前匹配的子串替換成指定字符串,并且將替換后的子串及之前到上次匹配的子串之后的字符串添加到StringBuffer對(duì)象中 //正則之前的字符和被替換的字符 matcher.appendReplacement(sb, matcher.group(1).toUpperCase()); //把之后的字符串也添加到StringBuffer對(duì)象中 matcher.appendTail(sb); } else { //去除除字母之外的前面帶的下劃線 return sb.toString().replaceAll("_", ""); } return underlineToHump(sb.toString()); } }
補(bǔ)充
Java還可以實(shí)現(xiàn)字符串駝峰格式與下?lián)Q線格式的轉(zhuǎn)換
下面是實(shí)現(xiàn)代碼
package yang.demo.justwrite; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description: 變量名轉(zhuǎn)換 * @Class: VariableNameConversion * @Author: Yiang37 * @Date: 2020/11/3 15:23 * @Version: 1.0 */ public class VariableNameConversion { private static Pattern humpPattern = Pattern.compile("[A-Z]"); public static void main(String[] args) { System.out.println(lowerLineToHump("NAME_AND_addREsS")); System.out.println(capitalizeTheFirstLetter("nAMe")); System.out.println(humpToLowerLine("nameAndAddress")); } /** * @Description: 下劃線格式 -> 駝峰 大小寫(xiě)均可 * <p> * NAME_AND_ADDRESS -> nameAndAddress * @Author: Yiang37 * @Date: 2020/11/03 15:26:02 * @Version: 1.0 * @method: lowerLineAndUppercaseToHump() * @param: [Big_] * @return: java.lang.String */ public static String lowerLineToHump(String lowerLineAndUppercaseStr) { //拆分成數(shù)組 String[] eachStr = lowerLineAndUppercaseStr.split("_"); StringBuilder resStr = new StringBuilder(); String firstStr = ""; String tempStr = ""; for (int i = 0; i < eachStr.length; i++) { //第一個(gè)數(shù)組全部小寫(xiě) if (i == 0) { firstStr = eachStr[0].toLowerCase(); resStr.append(firstStr); } else { //以后的數(shù)組首字母大寫(xiě) tempStr = capitalizeTheFirstLetter(eachStr[i]); resStr.append(tempStr); } } return resStr.toString(); } /** * @Description: 任意字符串 -> 首字母大寫(xiě) * NAME -> Name * name -> Name * NaMe -> Name * @Author: Yiang37 * @Date: 2020/11/03 16:50:16 * @Version: 1.0 * @method: capitalizeTheFirstLetter() * @param: [str] * @return: java.lang.String */ public static String capitalizeTheFirstLetter(String str) { char firstChar = str.toUpperCase().charAt(0); String nextStr = str.toLowerCase().substring(1); return firstChar + nextStr; } /** * @Description: 駝峰 -> 下劃線格式 默認(rèn)小寫(xiě),存在第二個(gè)形參且為true時(shí)大寫(xiě). * @Author: Yiang37 * @Date: 2020/11/03 17:10:25 * @Version: 1.0 * @method: humpToLowerLine() * @param: [humpStr, UppercaseZeroAndLowercaseOne] * @return: java.lang.String */ public static String humpToLowerLine(String humpStr, boolean ... defaultUppercaseAndTrueLowercase) { Matcher matcher = humpPattern.matcher(humpStr); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase()); } matcher.appendTail(sb); //如果第二個(gè)形參為true 轉(zhuǎn)為大寫(xiě) if (defaultUppercaseAndTrueLowercase.length>=1 && defaultUppercaseAndTrueLowercase[0]){ return sb.toString().toUpperCase(); } return sb.toString(); } }
輸出結(jié)果
nameAndAddress
Name
name_and_address
到此這篇關(guān)于Java實(shí)現(xiàn)字符串轉(zhuǎn)為駝峰格式的方法詳解的文章就介紹到這了,更多相關(guān)Java字符串轉(zhuǎn)駝峰格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-plus-boot-starter包與mybatis-plus-generator的沖突解決
本文主要介紹了mybatis-plus-boot-starter包與mybatis-plus-generator的沖突解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10Junit 5中@ParameterizedTest與@EnumSource結(jié)合使用
今天小編就為大家分享一篇關(guān)于Junit 5中@ParameterizedTest與@EnumSource結(jié)合使用,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較
這篇文章主要介紹了Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較的相關(guān)資料,需要的朋友可以參考下2017-02-02maven項(xiàng)目中<scope>provided</scope>的作用及說(shuō)明
這篇文章主要介紹了maven項(xiàng)目中<scope>provided</scope>的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫(kù)實(shí)例代碼
本篇文章主要介紹了JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫(kù)實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01Java?Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)的方法
這篇文章主要為大家詳細(xì)介紹了Java?Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03mybatis-plus之如何根據(jù)數(shù)據(jù)庫(kù)主鍵定義字段類型
這篇文章主要介紹了mybatis-plus之如何根據(jù)數(shù)據(jù)庫(kù)主鍵定義字段類型問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例詳解
這篇文章主要介紹了Java分支結(jié)構(gòu)程序設(shè)計(jì)例題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01