From 8420a9b0a1b94428a28db278c0ab0b26ba167340 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 31 Mar 2023 13:40:46 +0800 Subject: [PATCH] =?UTF-8?q?NamingCase.toCamelCase=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=8D=E8=BD=BD=EF=BC=8C=E5=8F=AF=E9=80=89=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=85=B6=E4=BB=96=E5=AD=97=E7=AC=A6=E4=B8=BA?= =?UTF-8?q?=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../main/java/cn/hutool/core/text/NamingCase.java | 14 +++++++++++++- .../java/cn/hutool/core/text/NamingCaseTest.java | 5 ++++- 3 files changed, 18 insertions(+), 2 deletions(-) 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); } }