From db0c9dd497d8e13071495fef1e31f4a3e297b1eb Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 18 Oct 2023 18:25:17 +0800 Subject: [PATCH] =?UTF-8?q?toCamelCase=20=E8=BD=AC=E6=8D=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/core/text/NamingCase.java | 14 ++++++- .../hutool/core/map/Issue3340Test.java | 39 +++++++++++++++++++ .../hutool/core/text/NamingCaseTest.java | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 hutool-core/src/test/java/org/dromara/hutool/core/map/Issue3340Test.java diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/NamingCase.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/NamingCase.java index 34c4ccb51..4144174e2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/NamingCase.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/NamingCase.java @@ -175,7 +175,12 @@ public class NamingCase { } /** - * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 + * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 当otherCharToLower为{@code true}时,分为以下情况: + * * * @param name 转换前的自定义方式命名的字符串 * @param symbol 原字符串中的连接符连接符 @@ -206,6 +211,13 @@ public class NamingCase { } return sb.toString(); } else { + if(otherCharToLower){ + if(StrUtil.isUpperCase(name2)){ + return name2.toLowerCase(); + } + return StrUtil.lowerFirst(name2); + } + return name2; } } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue3340Test.java b/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue3340Test.java new file mode 100644 index 000000000..20c63ef5f --- /dev/null +++ b/hutool-core/src/test/java/org/dromara/hutool/core/map/Issue3340Test.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2023. looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * https://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.core.map; + +import org.dromara.hutool.core.text.StrUtil; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +public class Issue3340Test { + @Test + void toCamelCaseMapTest() { + final Map map = new HashMap<>(); + map.put("ID","1"); + map.put("NAME","2"); + map.put("STU_ID","3"); + final Map map1 = MapUtil.toCamelCaseMap(map); + + Assertions.assertEquals("2", map1.get("name")); + } + + @Test + void toCamelCaseTest() { + final String str = "ID"; + Assertions.assertEquals("id", StrUtil.toCamelCase(str)); + } +} diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/text/NamingCaseTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/text/NamingCaseTest.java index 8178129a3..0192adb8e 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/text/NamingCaseTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/text/NamingCaseTest.java @@ -22,7 +22,7 @@ public class NamingCaseTest { public void toCamelCaseTest() { Dict.of() .set("Table_Test_Of_day","tableTestOfDay") - .set("TableTestOfDay","TableTestOfDay") + .set("TableTestOfDay","tableTestOfDay") .set("abc_1d","abc1d") .forEach((key, value) -> Assertions.assertEquals(value, NamingCase.toCamelCase(key))); }