现在存在这么一种需求:
当触发某个条件时,需要新建一个节点/项目,类似于在一个文件夹里创建一个文件,该文件需要满足顺序,比如:文件a(f1)、文件a(f2)、文件b(f3)…。
这些文件可以重命名,可以改成任意的,更改后的名字例如:文件a(f1)、2、文件b(f3)…。
现在如果新增一个文件,需要按照顺序添加进去,这里发现有f1,有f3,没有f2,因此新文件的名字是:文件x(f2).
python代码如下:
def get_material_next_name(name):
"""
用于新建文件时,给定一个新名字
:param name: 给的名字,例如:Ge
:return: 例如:Ge(mat1)
"""
name2 = name
path = self.current_material_directory
file_list = FileList(path).get_all_files()
set_material = set()
for file in file_list:
temp = extract_mat_number(get_name_without_extension(file))
if temp:
set_material.add(int(temp))
name = name2 + "(mat1)"
for i in range(1, len(set_material) + 2):
if i not in set_material:
name = name2 + "(mat" + str(i) + ")"
break
return name
# 材料新增命名校验
def extract_mat_number(s):
pattern = r'\(mat(\d+)\)$'
match = re.search(pattern, s)
if match:
return match.group(1) # 返回捕获的数字部分
else:
return None # 如果不匹配,返回 None