1

我在 2008 年 vb 速成版中有一个用户表单。零件号是通过连接字符串从用户输入创建的。然后我想检查目录中现有文件名中是否存在零件号的某个部分。下面是更详细的解释。

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

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))
4

2 回答 2

3

这是一个示例,说明如何在没有花哨的 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)
于 2012-06-27T16:01:23.693 回答
0

试试这个:

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

考虑如果 substring 函数的参数超过它正在解析的字符串的长度,它会抛出异常

于 2012-06-27T16:02:46.033 回答