diff --git a/CHANGELOG.md b/CHANGELOG.md index 1949a5b45..0fe32fb9d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * 【core 】 完善HttpStatus,参考相关规范,补全缺失的状态码(pr#968@Gitee) * 【core 】 NumberUtil增加(pr#968@Gitee) * 【core 】 Number128增加hash和equals方法(pr#968@Gitee) +* 【core 】 NamingCase.toCamelCase新增重载,可选是否转换其他字符为小写(issue#3031@ithub) ### 🐞Bug修复 * 【core 】 CollUtil.split优化切割列表参数判断,避免OOM(pr#3026@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/NamingCase.java b/hutool-core/src/main/java/cn/hutool/core/text/NamingCase.java index 56eb04c46..4aa9f1996 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/NamingCase.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/NamingCase.java @@ -162,6 +162,18 @@ public class NamingCase { * @since 5.7.17 */ public static String toCamelCase(CharSequence name, char symbol) { + return toCamelCase(name, symbol, true); + } + + /** + * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 + * + * @param name 转换前的自定义方式命名的字符串 + * @param symbol 原字符串中的连接符连接符 + * @param otherCharToLower 其他非连接符后的字符是否需要转为小写 + * @return 转换后的驼峰式命名的字符串 + */ + public static String toCamelCase(CharSequence name, char symbol, boolean otherCharToLower) { if (null == name) { return null; } @@ -180,7 +192,7 @@ public class NamingCase { sb.append(Character.toUpperCase(c)); upperCase = false; } else { - sb.append(Character.toLowerCase(c)); + sb.append(otherCharToLower ? Character.toLowerCase(c) : c); } } return sb.toString(); diff --git a/hutool-core/src/test/java/cn/hutool/core/text/NamingCaseTest.java b/hutool-core/src/test/java/cn/hutool/core/text/NamingCaseTest.java index c1df9f67e..1582982d0 100755 --- a/hutool-core/src/test/java/cn/hutool/core/text/NamingCaseTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/NamingCaseTest.java @@ -45,7 +45,10 @@ public class NamingCaseTest { @Test public void issue3031Test() { - final String camelCase = NamingCase.toCamelCase("user_name,BIRTHDAY"); + String camelCase = NamingCase.toCamelCase("user_name,BIRTHDAY"); Assert.assertEquals("userName,birthday", camelCase); + + camelCase = NamingCase.toCamelCase("user_name,BIRTHDAY", '_', false); + Assert.assertEquals("userName,BIRTHDAY", camelCase); } }