|
|
|
@ -14,7 +14,7 @@ public class StrUtils {
|
|
|
|
|
return split.length >= 1 ? split[0] : "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String removePrefix(String str, String prefix) {
|
|
|
|
|
public static String removePrefixCaseIgnore(String str, String prefix) {
|
|
|
|
|
if (str.toLowerCase().startsWith(prefix)) {
|
|
|
|
|
return str.substring(prefix.length());
|
|
|
|
|
} else {
|
|
|
|
@ -22,8 +22,8 @@ public class StrUtils {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String removeSuffix(String str, String suffix) {
|
|
|
|
|
if (str.endsWith(suffix)) {
|
|
|
|
|
public static String removeSuffixCaseIgnore(String str, String suffix) {
|
|
|
|
|
if (str.toLowerCase().endsWith(suffix)) {
|
|
|
|
|
return str.substring(0, str.length() - suffix.length());
|
|
|
|
|
} else {
|
|
|
|
|
return str;
|
|
|
|
@ -37,24 +37,79 @@ public class StrUtils {
|
|
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String toCamelCase(String str, boolean capitalizeFirstLetter) {
|
|
|
|
|
String lowerCaseStr = str.toLowerCase();
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
boolean upperCase = capitalizeFirstLetter;
|
|
|
|
|
for (int i = 0; i < lowerCaseStr.length(); i++) {
|
|
|
|
|
char c = lowerCaseStr.charAt(i);
|
|
|
|
|
if (c == '_') {
|
|
|
|
|
upperCase = true;
|
|
|
|
|
} else {
|
|
|
|
|
if (upperCase) {
|
|
|
|
|
sb.append(Character.toUpperCase(c));
|
|
|
|
|
upperCase = false;
|
|
|
|
|
public static String snakeToCamelCase(String snakeCase) {
|
|
|
|
|
if (snakeCase == null || snakeCase.isEmpty()) {
|
|
|
|
|
return snakeCase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 将字符串首字母转为小写,然后按下划线分割成数组
|
|
|
|
|
String[] parts = snakeCase.toLowerCase().split("_");
|
|
|
|
|
|
|
|
|
|
// 初始化结果字符串,并将第一个单词的首字母转为小写
|
|
|
|
|
StringBuilder camelCase = new StringBuilder(parts[0]);
|
|
|
|
|
|
|
|
|
|
// 从第二个单词开始遍历数组,将每个单词的首字母大写并拼接到结果字符串中
|
|
|
|
|
for (int i = 1; i < parts.length; i++) {
|
|
|
|
|
String part = parts[i];
|
|
|
|
|
if (!part.isEmpty()) {
|
|
|
|
|
camelCase.append(Character.toUpperCase(part.charAt(0)));
|
|
|
|
|
camelCase.append(part.substring(1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 返回转换后的驼峰命名字符串
|
|
|
|
|
return camelCase.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String snakeToPascalCase(String snakeCase) {
|
|
|
|
|
if (snakeCase == null || snakeCase.isEmpty()) {
|
|
|
|
|
return snakeCase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 将字符串首字母转为大写,其余部分转为小写,并按下划线分割成数组
|
|
|
|
|
String[] parts = snakeCase.toLowerCase().split("_");
|
|
|
|
|
|
|
|
|
|
// 创建一个 StringBuilder 对象来构建结果字符串
|
|
|
|
|
StringBuilder pascalCase = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
// 遍历分割后的数组,将每个部分的首字母大写并拼接到结果字符串中
|
|
|
|
|
for (String part : parts) {
|
|
|
|
|
if (part.isEmpty()) continue; // 跳过空字符串部分
|
|
|
|
|
pascalCase.append(Character.toUpperCase(part.charAt(0)));
|
|
|
|
|
if (part.length() > 1) {
|
|
|
|
|
pascalCase.append(part.substring(1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 返回转换后的大驼峰命名字符串
|
|
|
|
|
return pascalCase.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String camelToKebabCase(String camelCase) {
|
|
|
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
|
boolean isPreviousUpperCase = false;
|
|
|
|
|
for (int i = 0; i < camelCase.length(); i++) {
|
|
|
|
|
char currentChar = camelCase.charAt(i);
|
|
|
|
|
if (Character.isUpperCase(currentChar)) {
|
|
|
|
|
if (i != 0 && !isPreviousUpperCase) {
|
|
|
|
|
result.append("-");
|
|
|
|
|
}
|
|
|
|
|
result.append(Character.toLowerCase(currentChar));
|
|
|
|
|
isPreviousUpperCase = true;
|
|
|
|
|
} else {
|
|
|
|
|
sb.append(c);
|
|
|
|
|
result.append(currentChar);
|
|
|
|
|
isPreviousUpperCase = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String snakeToKebabCase(String snakeCase) {
|
|
|
|
|
if (snakeCase == null || snakeCase.isEmpty()) {
|
|
|
|
|
return snakeCase;
|
|
|
|
|
}
|
|
|
|
|
return sb.toString();
|
|
|
|
|
// 将下划线替换为连字符
|
|
|
|
|
return snakeCase.replace("_", "-");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|