1

2008 vbExpressEditionのユーザーフォームがあります。部品番号は、連結文字列を介したユーザー入力から作成されます。次に、部品番号の特定の部分がディレクトリ内の既存のファイル名に存在するかどうかを確認したいと思います。以下は、より詳細な説明です。

これは、フォームのユーザー入力から部品番号を作成するための私のコードです。

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)(ファイル名のこの部分のみ)を1つのディレクトリ内のすべてのファイルと比較します。一致するすべてのファイルのリストではなく、存在に対する「はい」または「いいえ」の答えが必要です。以下のコードは、私が試したすべてのものであり、同時にすべてではありません。

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

引数が解析中の文字列の長さを超える場合、部分文字列関数は例外をスローすることを考慮してください

于 2012-06-27T16:02:46.033 に答える