diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java
index 9a9d66a11..2ff065d9f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java
@@ -4022,6 +4022,19 @@ public class CharSequenceUtil {
return NamingCase.toCamelCase(name);
}
+ /**
+ * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world=》helloWorld; hello-world=》helloWorld
+ *
+ * @param name 转换前的下划线大写方式命名的字符串
+ * @param symbol 连接符
+ * @return 转换后的驼峰式命名的字符串
+ * @see NamingCase#toCamelCase(CharSequence, char)
+ */
+ public static String toCamelCase(CharSequence name, char symbol) {
+ return NamingCase.toCamelCase(name, symbol);
+ }
+
// ------------------------------------------------------------------------ isSurround
/**
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 2c720967f..bd1c4a749 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
@@ -150,19 +150,30 @@ public class NamingCase {
* @return 转换后的驼峰式命名的字符串
*/
public static String toCamelCase(CharSequence name) {
+ return toCamelCase(name, CharUtil.UNDERLINE);
+ }
+
+ /**
+ * 将连接符方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ *
+ * @param name 转换前的自定义方式命名的字符串
+ * @param symbol 连接符
+ * @return 转换后的驼峰式命名的字符串
+ */
+ public static String toCamelCase(CharSequence name, char symbol) {
if (null == name) {
return null;
}
final String name2 = name.toString();
- if (StrUtil.contains(name2, CharUtil.UNDERLINE)) {
+ if (StrUtil.contains(name2, symbol)) {
final int length = name2.length();
final StringBuilder sb = new StringBuilder(length);
boolean upperCase = false;
for (int i = 0; i < length; i++) {
char c = name2.charAt(i);
- if (c == CharUtil.UNDERLINE) {
+ if (c == symbol) {
upperCase = true;
} else if (upperCase) {
sb.append(Character.toUpperCase(c));
@@ -176,4 +187,5 @@ public class NamingCase {
return name2;
}
}
+
}
diff --git a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java
index 9b9ebc7b4..e98ff4dbf 100644
--- a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java
@@ -384,6 +384,12 @@ public class StrUtilTest {
String abc1d = StrUtil.toCamelCase("abc_1d");
Assert.assertEquals("abc1d", abc1d);
+
+
+ String str2 = "Table-Test-Of-day";
+ String result2 = StrUtil.toCamelCase(str2, CharUtil.DASHED);
+ System.out.println(result2);
+ Assert.assertEquals("tableTestOfDay", result2);
}
@Test