gpt4 book ai didi

java - 如何对字符串进行排序[即基于特定名称的文件名集]

转载 作者:行者123 更新时间:2023-12-02 09:55:28 25 4
gpt4 key购买 nike

当前,在运行我的 ListFiles() 后,我得到了从目录中获取的文件名列表,并需要将其作为输入,下面是我得到的 xml 文件。

我获得文件名列表的代码是:

 String dirPath = "D:\\Input_Split_xml";
File dir = new File(dirPath);
String[] files = dir.list();
for (String aFile : files)
{
System.out.println("file names are "+aFile);
}

Currently all the File names are stored in "aFile" :

file names are 51090323-005_low_level.xml
file names are 90406990_low_level.xml
file names are 90406991_low_level.xml
file names are TC_CADBOM_51090323-005_low_level_BOM.xml
file names are TC_CADBOM_90406990_low_level_BOM.xml
file names are TC_CADBOM_90406991_low_level_BOM.xml
file names are TC_CADDESIGN_51090323-005_low_level.xml
file names are TC_CADDESIGN_90406990_low_level.xml
file names are TC_CADDESIGN_90406991_low_level.xml

现在我需要按以下方式对这些文件名进行排序,以便将它们视为解析 xml 文件的输入。

1)例如:基于“51090323-005”编号,我需要对该编号下的所有文件名进行分组,并将它们一个接一个地作为输入,并使用它来获取每个 xml 的节点计数。 IE。这些是该编号下的 3 个 XML,因此我将收集所有这些并逐个使用它们。

 a)51090323-005_low_level.xml
b)TC_CADBOM_51090323-005_low_level_BOM.xml
c)TC_CADDESIGN_51090323-005_low_level.xml

专家需要您的帮助来解决这个问题

最佳答案

此函数返回一个映射,其中每个条目对应于一组相关文件。借助正则表达式,可以轻松验证文件名模式并提取数字部分(请参阅 group(1) )

// key=number, value=array of matching files, sorted
public static Map<String, File[]> process(String fileLocation) {
Map<String, File[]> fileMap = new HashMap<>();
Pattern startFileNamePattern = Pattern.compile("([0-9-]+)_low_level.xml");
File dir = new File(fileLocation);
File[] startFiles = dir.listFiles((File file, String name) -> startFileNamePattern.matcher(name).matches());
for (File f : startFiles) {
Matcher m = startFileNamePattern.matcher(f.getName());
if (m.matches()) {
String number = m.group(1);
File[] allFiles = dir.listFiles((File arg0, String name) -> name.contains(number));
Arrays.sort(allFiles);
fileMap.put(number, allFiles);
}
}
return fileMap;
}

关于java - 如何对字符串进行排序[即基于特定名称的文件名集],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56038577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com