驼峰式与下划线式命名相互转换
1、下划线命名转换为驼峰式命名
/** * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 * * @param name 转换前的自定义方式命名的字符串 * @param symbol 连接符 * @return 转换后的驼峰式命名的字符串 */ public static String toCamelCase(String name, char symbol) { if (null == name) { return null; } if (name.indexOf(symbol) >= 0) { final int length = name.length(); final StringBuilder sb = new StringBuilder(length); boolean upperCase = false; for (int i = 0; i < length; i++) { char c = name.charAt(i); if (c == symbol) { upperCase = true; } else if (upperCase) { sb.append(Character.toUpperCase(c)); upperCase = false; } else { sb.append(Character.toLowerCase(c)); } } return sb.toString(); } else { return name; } }
2、驼峰式转下划线式的命名
/** * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 * * @param name 转换前的自定义方式命名的字符串 * @param symbol 连接符 * @return 转换后的驼峰式命名的字符串 */ public static String toUnderlineCase(String name, char symbol) { if (name == null) { return null; } final int length = name.length(); final StringBuilder sb = new StringBuilder(); char c; for (int i = 0; i < length; i++) { c = name.charAt(i); if (Character.isUpperCase(c)) { final Character preChar = (i > 0) ? name.charAt(i - 1) : null; final Character nextChar = (i < name.length() - 1) ? name.charAt(i + 1) : null; if (null != preChar) { if (symbol == preChar) { // 前一个为分隔符 if (null == nextChar || Character.isLowerCase(nextChar)) { //普通首字母大写,如_Abb -> _abb c = Character.toLowerCase(c); } //后一个为大写,按照专有名词对待,如_AB -> _AB } else if (Character.isLowerCase(preChar)) { // 前一个为小写 sb.append(symbol); if (null == nextChar || Character.isLowerCase(nextChar) || Character.isDigit(nextChar)) { //普通首字母大写,如aBcc -> a_bcc c = Character.toLowerCase(c); } // 后一个为大写,按照专有名词对待,如aBC -> a_BC } else { //前一个为大写 if (null == nextChar || Character.isLowerCase(nextChar)) { // 普通首字母大写,如ABcc -> A_bcc sb.append(symbol); c = Character.toLowerCase(c); } // 后一个为大写,按照专有名词对待,如ABC -> ABC } } else { // 首字母,需要根据后一个判断是否转为小写 if (null == nextChar || Character.isLowerCase(nextChar)) { // 普通首字母大写,如Abc -> abc c = Character.toLowerCase(c); } // 后一个为大写,按照专有名词对待,如ABC -> ABC } } sb.append(c); } return sb.toString(); }
在工作中,需要将键值进行转换。
本博客的所有博文,大都来自自己的工作理解。希望对大家有用,文中难免会有疏漏和错误,欢迎大家批评指正,跟我交流和学习。