|
楼主 |
发表于 2025-2-6 11:44
|
显示全部楼层
deepseek给我的方案:没有验证,先借网络记录,空了来验证下。
方案解释:
提取文件名:
file_name = rel_model_name:获取文件名。
strlen = STRING_LENGTH(file_name):计算文件名的总字符数。
查找第一个“-”字符的位置:
p_s1 = SEARCH(file_name, "-"):查找第一个“-”字符的位置。
临时截取文件名:
tem_name = EXTRACT(file_name, p_s1 + 1, strlen - p_s1):从第一个“-”字符之后的位置开始截取文件名。
查找第二个“-”字符的位置:
p_s2 = SEARCH(tem_name, "-"):在临时文件名中查找第二个“-”字符的位置。
p_s3 = p_s1 + p_s2:计算第二个“-”字符在原始文件名中的位置。
提取各部分信息:
PN1 = EXTRACT(file_name, 1, p_s1 - 1):提取第一个“-”字符之前的文本。
PN2 = EXTRACT(file_name, p_s1 + 1, p_s3 - p_s2 - 1):提取两个“-”字符之间的文本。
PN3 = EXTRACT(file_name, p_s3 + 1, strlen - p_s3):提取第二个“-”字符之后的文本。
格式化输出:
Cpartno = PN1 + "." + PN2 + "." + PN3:将提取的部分组合成所需的格式。
优化建议:
错误处理:
在提取和查找操作中,可以添加错误处理机制,以防止文件名格式不符合预期时程序崩溃。
代码简洁性:
可以将一些重复的操作封装成函数,以提高代码的可读性和可维护性。
通用性:
如果文件名格式可能会有所变化,可以考虑使用正则表达式来提取信息,这样可以更灵活地处理不同的文件名格式。
示例代码(伪代码):
plaintext
复制
FUNCTION ExtractPartNumber(file_name)
strlen = STRING_LENGTH(file_name)
p_s1 = SEARCH(file_name, "-")
IF p_s1 == -1 THEN
RETURN "Invalid file name format"
END IF
tem_name = EXTRACT(file_name, p_s1 + 1, strlen - p_s1)
p_s2 = SEARCH(tem_name, "-")
IF p_s2 == -1 THEN
RETURN "Invalid file name format"
END IF
p_s3 = p_s1 + p_s2
PN1 = EXTRACT(file_name, 1, p_s1 - 1)
PN2 = EXTRACT(file_name, p_s1 + 1, p_s3 - p_s2 - 1)
PN3 = EXTRACT(file_name, p_s3 + 1, strlen - p_s3)
RETURN PN1 + "." + PN2 + "." + PN3
END FUNCTION
file_name = "2-3-N14567890"
Cpartno = ExtractPartNumber(file_name)
PRINT Cpartno
输出:
复制
2.3.N14567890
这个方案可以有效地从文件名中提取信息并格式化为所需的工程图格式。如果有其他特殊需求或文件名格式变化,可以进一步调整和优化代码。
请依据上面的方案,处理:001-002-003-1234567890
服务器繁忙,请稍后再试。
请依据上面的方案,处理:001-002-003-1234567890
服务器繁忙,请稍后再试。
上面的方案是处理2个“-”号,请列出处理3个“-”好的方案,比如处理:A01-002-G003-12345678
处理包含3个“-”号的文件名(如 A01-002-G003-12345678)时,我们需要提取更多的部分并将其格式化为所需的工程图格式。以下是处理3个“-”号的方案:
方案目标:
将文件名 A01-002-G003-12345678 转换为工程图格式:A01.002.G003.12345678。
方案步骤:
提取文件名:
获取文件名并计算其总长度。
查找每个“-”字符的位置:
找到每个“-”字符的位置,用于分割文件名。
提取各部分信息:
根据“-”字符的位置,提取文件名中的各个部分。
格式化输出:
将提取的部分用“.”连接,生成最终的工程图格式。
伪代码实现:
plaintext
复制
FUNCTION ExtractPartNumber(file_name)
strlen = STRING_LENGTH(file_name) // 计算文件名总长度
// 查找第一个“-”字符的位置
p_s1 = SEARCH(file_name, "-")
IF p_s1 == -1 THEN
RETURN "Invalid file name format: Missing first '-'"
END IF
// 查找第二个“-”字符的位置
tem_name1 = EXTRACT(file_name, p_s1 + 1, strlen - p_s1)
p_s2 = SEARCH(tem_name1, "-")
IF p_s2 == -1 THEN
RETURN "Invalid file name format: Missing second '-'"
END IF
p_s2 = p_s1 + p_s2 // 计算第二个“-”在原始文件名中的位置
// 查找第三个“-”字符的位置
tem_name2 = EXTRACT(file_name, p_s2 + 1, strlen - p_s2)
p_s3 = SEARCH(tem_name2, "-")
IF p_s3 == -1 THEN
RETURN "Invalid file name format: Missing third '-'"
END IF
p_s3 = p_s2 + p_s3 // 计算第三个“-”在原始文件名中的位置
// 提取各部分信息
PN1 = EXTRACT(file_name, 1, p_s1 - 1) // 提取第一个“-”之前的部分
PN2 = EXTRACT(file_name, p_s1 + 1, p_s2 - p_s1 - 1) // 提取第一个和第二个“-”之间的部分
PN3 = EXTRACT(file_name, p_s2 + 1, p_s3 - p_s2 - 1) // 提取第二个和第三个“-”之间的部分
PN4 = EXTRACT(file_name, p_s3 + 1, strlen - p_s3) // 提取第三个“-”之后的部分
// 格式化输出
RETURN PN1 + "." + PN2 + "." + PN3 + "." + PN4
END FUNCTION
// 示例调用
file_name = "A01-002-G003-12345678"
Cpartno = ExtractPartNumber(file_name)
PRINT Cpartno
输出结果:
复制
A01.002.G003.12345678
方案说明:
查找每个“-”字符的位置:
使用 SEARCH 函数依次查找每个“-”字符的位置。
每次查找后,更新临时字符串和位置偏移量。
提取各部分信息:
根据“-”字符的位置,使用 EXTRACT 函数提取文件名中的各个部分。
格式化输出:
将提取的部分用“.”连接,生成最终的工程图格式。
优化建议:
错误处理:
如果文件名中“-”字符的数量不足或格式不正确,可以返回错误信息。
通用性:
如果文件名中“-”字符的数量可能变化,可以使用循环动态处理。
正则表达式:
如果支持正则表达式,可以用更简洁的方式提取信息。例如:
plaintext
复制
MATCH(file_name, "([^-]+)-([^-]+)-([^-]+)-(.+)")
正则表达式方案(如果支持):
plaintext
复制
FUNCTION ExtractPartNumber(file_name)
pattern = "([^-]+)-([^-]+)-([^-]+)-(.+)" // 正则表达式匹配规则
matches = MATCH(file_name, pattern) // 匹配文件名
IF matches IS EMPTY THEN
RETURN "Invalid file name format"
END IF
// 提取匹配的部分
PN1 = matches[1]
PN2 = matches[2]
PN3 = matches[3]
PN4 = matches[4]
// 格式化输出
RETURN PN1 + "." + PN2 + "." + PN3 + "." + PN4
END FUNCTION
// 示例调用
file_name = "A01-002-G003-12345678"
Cpartno = ExtractPartNumber(file_name)
PRINT Cpartno
输出结果:
复制
A01.002.G003.12345678
以上方案可以灵活处理包含3个“-”号的文件名,并生成所需的工程图格式。如果有更多“-”号或格式变化,可以进一步扩展逻辑。 |
|