首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法把这两条语句合并成一条?

有没有办法把这两条语句合并成一条?
EN

Stack Overflow用户
提问于 2015-08-19 03:42:48
回答 3查看 69关注 0票数 0

我想知道在VB.NET中是否有任何方法可以使用带有一维字符串的逻辑运算符。

这是我的代码的一部分,理想情况下,我希望能够组合这两种搜索(例如,file.GetFiles("*.mp4" And "*.wmv")):

代码语言:javascript
复制
                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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-20 07:01:38

如果将每个文件扩展名放入一个数组中,您只需对每个扩展名进行迭代,在添加或删除扩展名时唯一需要更改的就是数组本身。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-08-19 06:20:42

对于.NET 4.0及更高版本,

代码语言:javascript
复制
Dim files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
        .Where(Function(s) s.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase) 
        OrElse s.EndsWith(".wmv",  StringComparison.OrdinalIgnoreCase))

对于早期版本的.NET,

代码语言:javascript
复制
Dim files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
       .Where(Function(s) s.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase)     
       OrElse s.EndsWith(".wmv", StringComparison.OrdinalIgnoreCase))

注意,由于性能的提高,'Directory.EnumerateFiles()‘比'Directory.GetFiles()’更好。如果您的目录中没有大量的文件,那么Directory.GetFiles()方法将非常好地工作。

票数 0
EN

Stack Overflow用户

发布于 2015-08-19 07:35:26

您可以结合使用regexDirectory.EnumerateFiles。就像这样:

代码语言:javascript
复制
Regex re = new Regex("\.(mp4|wmv)$");
Dim filteredFiles = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories).Where(Function(c) re.IsMatch(c))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32086168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档