Java實現字符串轉為駝峰格式的方法詳解
字符串轉為駝峰格式 構建工具類
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; /** * 字符串轉為駝峰格式 構建工具類 * @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){ //正則匹配下劃線及後一個字符,刪除下劃線並將匹配的字符轉成大寫 Matcher matcher = UNDERLINE_PATTERN.matcher(str); StringBuffer sb = new StringBuffer(str); if (matcher.find()) { sb = new StringBuffer(); //將當前匹配的子串替換成指定字符串,並且將替換後的子串及之前到上次匹配的子串之後的字符串添加到StringBuffer對象中 //正則之前的字符和被替換的字符 matcher.appendReplacement(sb, matcher.group(1).toUpperCase()); //把之後的字符串也添加到StringBuffer對象中 matcher.appendTail(sb); } else { //去除除字母之外的前面帶的下劃線 return sb.toString().replaceAll("_", ""); } return underlineToHump(sb.toString()); } }
補充
Java還可以實現字符串駝峰格式與下換線格式的轉換
下面是實現代碼
package yang.demo.justwrite; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description: 變量名轉換 * @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: 下劃線格式 -> 駝峰 大小寫均可 * <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) { //拆分成數組 String[] eachStr = lowerLineAndUppercaseStr.split("_"); StringBuilder resStr = new StringBuilder(); String firstStr = ""; String tempStr = ""; for (int i = 0; i < eachStr.length; i++) { //第一個數組全部小寫 if (i == 0) { firstStr = eachStr[0].toLowerCase(); resStr.append(firstStr); } else { //以後的數組首字母大寫 tempStr = capitalizeTheFirstLetter(eachStr[i]); resStr.append(tempStr); } } return resStr.toString(); } /** * @Description: 任意字符串 -> 首字母大寫 * 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: 駝峰 -> 下劃線格式 默認小寫,存在第二個形參且為true時大寫. * @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); //如果第二個形參為true 轉為大寫 if (defaultUppercaseAndTrueLowercase.length>=1 && defaultUppercaseAndTrueLowercase[0]){ return sb.toString().toUpperCase(); } return sb.toString(); } }
輸出結果
nameAndAddress
Name
name_and_address
到此這篇關於Java實現字符串轉為駝峰格式的方法詳解的文章就介紹到這瞭,更多相關Java字符串轉駝峰格式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 正則表達式匹配${key}並在Java中使用的詳細方法
- java如何使用正則表達式限制特殊字符的個數
- 一文搞懂Java正則表達式的使用
- Java Pattern與Matcher字符串匹配案例詳解
- java 如何判斷是否是26個英文字母