簡體   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