我想知道在VB.NET中是否有任何方法可以使用具有1维字符串的逻辑运算符。
这是我的代码的一部分,理想情况下我希望能够将两个搜索结合起来(例如file.GetFiles("*.mp4" And "*.wmv")
):
For Each f In file.GetFiles("*.mp4")
FileBrowser.Items.Add(f.Name, 5)
i = FileBrowser.FindItemWithText(f.Name).Index
FileBrowser.Items.Item(i).Text = f.Name.Remove(f.Name.Count - f.Extension.Count, f.Extension.Count)
FileBrowser.Items.Item(i).Name = f.FullName
Next
For Each f In file.GetFiles("*.wmv")
FileBrowser.Items.Add(f.Name, 5)
i = FileBrowser.FindItemWithText(f.Name).Index
FileBrowser.Items.Item(i).Text = f.Name.Remove(f.Name.Count - f.Extension.Count, f.Extension.Count)
FileBrowser.Items.Item(i).Name = f.FullName
Next
可以使用字符串数组或列表来完成吗?
答案 0 :(得分:1)
如果您将每个文件扩展名放在一个数组中,您可以为每个扩展名迭代它,并且在添加或删除扩展名时,您唯一必须更改的是数组本身。
Dim LookForExts() As String = New String() {"*.mp4", "*.wmv", "*.mp3", "*.wav"} 'Add or remove file extensions here.
For Each ext In LookForExts
For Each f In file.GetFiles(ext)
FileBrowser.Items.Add(f.Name, 5)
i = FileBrowser.FindItemWithText(f.Name).Index
FileBrowser.Items.Item(i).Text = f.Name.Remove(f.Name.Count - f.Extension.Count, f.Extension.Count)
FileBrowser.Items.Item(i).Name = f.FullName
Next
Next
答案 1 :(得分:0)
对于.NET 4.0及更高版本,
self.sampleConstraint.constant = 20
self.view.layoutIfNeeded()
对于早期版本的.NET,
Dim files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
.Where(Function(s) s.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase)
OrElse s.EndsWith(".wmv", StringComparison.OrdinalIgnoreCase))
请注意,由于性能改进,“Directory.EnumerateFiles()”优先于“Directory.GetFiles()”。如果您的目录中没有大量文件,Directory.GetFiles()方法将完美地运行。
答案 2 :(得分:0)
您可以将regex
与Directory.EnumerateFiles
结合使用。试试这样:
Regex re = new Regex("\.(mp4|wmv)$");
Dim filteredFiles = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories).Where(Function(c) re.IsMatch(c))