有没有办法将这两个陈述合二为一?

时间:2015-08-19 03:42:49

标签: vb.net string

我想知道在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

可以使用字符串数组或列表来完成吗?

3 个答案:

答案 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)

您可以将regexDirectory.EnumerateFiles结合使用。试试这样:

Regex re = new Regex("\.(mp4|wmv)$");
Dim filteredFiles = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories).Where(Function(c) re.IsMatch(c))