fix:增加自动航线名称的逻辑

This commit is contained in:
高大 2026-01-28 09:19:56 +08:00
parent f553b46b7b
commit e15423b9f7
1 changed files with 53 additions and 0 deletions

View File

@ -250,4 +250,57 @@ public class FileUtils
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
/**
* 处理文件名序号生成不重复的文件名
*
* @param baseName 基础文件名
* @param existingNames 已存在的文件名列表
* @return 处理后的文件名
*/
public static String generateUniqueFileName(String baseName, java.util.List<String> existingNames)
{
if (existingNames == null || existingNames.isEmpty())
{
return baseName;
}
java.util.List<Integer> existingIndices = new java.util.ArrayList<>();
// 收集所有已存在的序号
for (String existingName : existingNames)
{
if (existingName != null)
{
// 匹配格式文件名数字
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^" + java.util.regex.Pattern.quote(baseName) + "\\s*\\((\\d+)\\)$");
java.util.regex.Matcher matcher = pattern.matcher(existingName);
if (matcher.find())
{
int index = Integer.parseInt(matcher.group(1));
existingIndices.add(index);
}
}
}
// 排序序号列表
java.util.Collections.sort(existingIndices);
// 找到第一个可用的序号
int availableIndex = 1;
for (int index : existingIndices)
{
if (index == availableIndex)
{
availableIndex++;
}
else if (index > availableIndex)
{
break;
}
}
// 生成新的文件名
return baseName + " (" + availableIndex + ")";
}
}