update: 提交apt自动生成的代码

This commit is contained in:
ruying408
2025-03-12 00:13:08 +08:00
parent 143e729590
commit 74df5ebdba
23 changed files with 1182 additions and 23 deletions

View File

@@ -170,38 +170,37 @@ public class ConvertUtil {
}
public static String extractController2Path(String prefix, String className) {
// 1. 使用正则匹配 `Controller` 之前的部分
Pattern pattern = Pattern.compile("([A-Za-z0-9]+)Controller$");
Matcher matcher = pattern.matcher(className);
if (matcher.find()) {
String extracted = matcher.group(1); // 提取 "DemoInfo" 或 "Demo2UserInfo"
String extracted = matcher.group(1);
// 2. 计算前缀后缀匹配部分
String prefixSuffix = findPrefixSuffixMatch(prefix, extracted);
if (!prefixSuffix.isEmpty()) {
extracted = extracted.replaceFirst(prefixSuffix, ""); // 去掉匹配部分
// 将前缀拆分为单词数组
String[] prefixWords = splitCamelCase(prefix);
String[] classWords = splitCamelCase(extracted);
// 从前缀和类名中逐个匹配并去除匹配的部分
int i = 0;
for (int j = 0; i < prefixWords.length; j++) {
if (j >= classWords.length) {
break;
}
for (String prefixWord : prefixWords) {
if (prefixWord.equalsIgnoreCase(classWords[i])) {
i++;
break;
}
}
}
// 3. 处理驼峰命名转换 `/` 分隔符
return formatExtractedString(extracted);
// 从当前位置开始,拼接剩余部分
return String.join("/", java.util.Arrays.copyOfRange(classWords, i, classWords.length)).toLowerCase();
}
return "";
}
private static String findPrefixSuffixMatch(String prefix, String extracted) {
if (extracted.startsWith(prefix)) {
return prefix;
}
// 从 prefix 中找出类名的前缀部分,例如 AdminDemo -> DemoAdminDemo2 -> Demo2
Pattern pattern = Pattern.compile("[A-Z][a-z0-9]*$");
Matcher matcher = pattern.matcher(prefix);
return matcher.find() ? matcher.group() : "";
}
private static String formatExtractedString(String extracted) {
// 处理驼峰命名转换DemoDataInfo3 → data/info3
extracted = extracted.replaceAll("([a-z])([A-Z])", "$1/$2").toLowerCase();
return extracted;
// 拆分驼峰命名的字符串为单词数组
private static String[] splitCamelCase(String input) {
return input.split("(?<=.)(?=[A-Z])");
}
}