繁体   English   中英

如何检查文件名是否包含vb.net中字符串的一部分

[英]How can I check if filename contains a portion of a string in vb.net

我在2008 vb express edition中有一个userform。 部件号是通过连接字符串从用户输入创建的。 我想检查目录中现有文件名中是否存在部件号的某个部分。 以下是更详细的说明。

这是我从表单上的用户输入创建部件号的代码。

L_PartNo.Text = String.Concat(CB_Type.Text, CB_Face.Text, "(", T_Width.Text, "x", T_Height.Text, ")", mount, T_Qty.Text, weep, serv)

然后我有以下代码告诉用户他们刚刚创建的配置(部分号)是否存在

L_Found.Visible = True
If File.Exists("Z:\Cut Sheets\TCS Products\BLANK OUT SIGN\" & (L_PartNo.Text) & ".pdf") Then
        L_Found.Text = "This configuration exists"
      Else
        L_Found.Text = "This configuration does NOT exist"
      End If

这是我需要帮助的地方。 部件号看起来像这个BX002(30x30)A1SS我想比较002(30x30)(只是文件名的这一部分)到一个目录中的所有文件。 我想要一个是或否的答案,而不是所有匹配文件的列表。 下面的代码是我尝试过的所有内容,而不是所有内容。

Dim b As Boolean
b = L_PartNo.Text.Contains(NewFace)

Dim NewFace As String = String.Concat(CB_Face.Text, "(", T_Width.Text, "x", T_Height.Text, ")")
Dim NewFace = L_PartNo.Text.Substring(2, 10)

If filename.Contains(NewFace) Then
        lNewFace.Visible = False
      Else
        lNewFace.Visible = True
      End If

下面的代码是C#中答案的翻译,但它也不起作用

Dim contains As Boolean = Directory.EnumerateFiles(path).Any(Function(f) [String].Equals(f, "myfilethree", StringComparison.OrdinalIgnoreCase))

这是一个如何在没有花哨的LINQ和Lambda的情况下做到这一点的例子,这似乎让你感到困惑:

Public Function FileMatches(folderPath As String, filePattern As String, phrase As String) As Boolean
    For Each fileName As String In Directory.GetFiles(folderPath, filePattern)
        If fileName.Contains(phrase) Then
            Return True
        End If
    Next
    Return False
End Function

或者,如果您需要它不区分大小写:

Public Function FileMatches(folderPath As String, filePattern As String, phrase As String) As Boolean
    For Each fileName As String In Directory.GetFiles(folderPath, filePattern)
        If fileName.ToLower().Contains(phrase.ToLower()) Then
            Return True
        End If
    Next
    Return False
End Function

您可以像这样调用方法:

lNewFace.Visible = FileMatches(path, "*.pdf", NewFace)

尝试这个:

 lNewFace.Visible = IO.Directory.GetFiles(path, "*.pdf").Where(Function(file) file. _
            Substring(2, 10) = NewFace).FirstOrDefault Is Nothing

考虑如果子参数的参数超出了它正在解析的字符串的长度,则它将抛出异常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM