提问人:Gianfranco Vrech 提问时间:7/3/2023 最后编辑:Eugene AstafievGianfranco Vrech 更新时间:7/4/2023 访问量:46
通过字符串列表获取具有多个扩展名的文件名
Get files names with multiple extensions by a list of strings
问:
在VSTO解决方案中,我有一个列表(Strings):
AA000017
FF100218
P0100217
DF100216
CODICE - CODE
A010AA77
B0000017
在一个文件夹中,我有许多具有不同扩展名的文件,例如我有:
DF100216.DXF
DF100216.DWG
DF100216.PDF
DF100216.STP
FF100218.PDF
FF100218_00-001.PDF
FF100218_00-002.PDF
FF100218_00-003.PDF
FF100218.STP
ecc
这适用于列表的每个值。例如,如果我需要带有代码FF100218的 pdf 文件,我需要返回一个 lsit whit :
FF100218.PDF
FF100218_00-001.PDF
FF100218_00-002.PDF
FF100218_00-003.PDF
我有这样的代码:
Dim SelectedtList As New List(Of String) {"DF100216","FF100218","DF100216"}
Dim DrawingExtensionList() As String = {"*.PDF","*.TIF"}
For Each ext In DrawingExtensionList
'Returns only the filenames based on the directory that is selected
Dim fi = From f In New IO.DirectoryInfo(DrowingPath_Internal).GetFiles(ext).Cast(Of IO.FileInfo)()
Where fi.Name Like SelectedtList
Select f
fileList.AddRange(fi)
Next
有没有办法做到这一点?
答:
1赞
Andrew Morton
7/4/2023
#1
参考在 C# 中,如何使用另一个列表的 StartsWith() 条件过滤列表?,您可以这样做:
Imports System.IO
Module Module1
Sub Main()
Dim files = {"DF100216.DXF", "DF100216.DWG", "DF100216.PDF", "DF100216.STP", "FF100218.PDF", "FF100218_00-001.PDF", "FF100218_00-002.PDF", "FF100218_00-003.PDF", "FF100218.STP", "ecc"}
Dim selectedList = {"DF100216", "FF100218", "DF100216"}
Dim drawingExtensionList() As String = {".pdf", ".TIF"}
Dim fileList = files.Where(Function(f) selectedList.Any(Function(s) Path.GetFileNameWithoutExtension(f).StartsWith(s, StringComparison.InvariantCultureIgnoreCase) AndAlso
drawingExtensionList.Any(Function(w) String.Compare(Path.GetExtension(f), w, StringComparison.InvariantCultureIgnoreCase) = 0))).ToList()
Console.WriteLine(String.Join(vbCrLf, fileList))
Console.ReadLine()
End Sub
End Module
注意:它使用文件扩展名,如“.pdf”,而不是通配符样式的“*.pdf”。
要获得:
DF100216.PDF
FF100218.PDF
FF100218_00-001.PDF
FF100218_00-002.PDF
FF100218_00-003.PDF
要使它从目录中工作,而不是像上面的例子那样将其设置为数组,您可以使用:
Dim files = Directory.EnumerateFiles("your\full\path\here")
评论
0赞
Gianfranco Vrech
7/4/2023
让我们在聊天中继续讨论。
评论
GetFiles