【问题标题】:VB Finding Pattern in filenameVB在文件名中查找模式
【发布时间】:2020-12-02 05:59:14
【问题描述】:

我有 2 个变量:

    Dim filename as string = "Test2020.csv"
    Dim fileSearch as string = "Test*.csv"

文件名是文件名,文件搜索是用来查找文件的模式。

我需要检查文件名是否与模式匹配。

我打算这样做的方法是获取 *: "Test" 之前的每个字符串以及 *: ".csv" 之后的所有内容,并检查文件名是否以这些开头和结尾。有没有一种更简单的方法来查找一个字符串模式是否与另一个匹配。

请注意,我正在比较 2 个字符串,而不是尝试在目录中查找文件。

【问题讨论】:

  • 你可以使用正则表达式,还是采用给定的模式,然后转换为正则表达式,然后使用?
  • 能否告诉我正则表达式模式是什么。我对正则表达式的了解很少。我以前使用过正则表达式,但它是为了删除空格。
  • 如果fileSearch 是用于查找filename 的模式,为什么您认为文件名不匹配(因为它已经匹配)?您是否遗漏了一些细节?
  • @Jimi 是的,文件名变量可以在发现时更新。我坚持使用列表文件模式和一个文件名。我需要找到它属于哪个文件模式。这是一个现有的公司应用程序,所以我只能更改多少,
  • 试试:System.Text.RegularExpressions.Regex.IsMatch(filename, "(?<=)Test\d{4}.csv", System.Text.RegularExpressions.RegexOptions.IgnoreCase)

标签: vb.net filenames


【解决方案1】:

试试这个:

这返回真:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim fileSearch As String = "Test1929.csv"
Dim FileNameMatch As Boolean = fileSearch Like "Test####[.]csv"
TextBox1.Text = FileNameMatch
End Sub

这返回 false:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim fileSearch As String = "Testabcd.csv"
Dim FileNameMatch As Boolean = fileSearch Like "Test####[.]csv"
TextBox1.Text = FileNameMatch
End Sub

【讨论】:

    【解决方案2】:

    您可以使用String.StartWith()String.EndsWith()

    Private Function TestPatternMatch(FileName As String) As Boolean
        If FileName.StartsWith("Test") AndAlso FileName.EndsWith(".csv") Then
            Return True
        Else
            Return False
        End If
    End Function
    

    用法:

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Debug.Print(TestPatternMatch("Test2020.csv").ToString)
    End Sub
    

    【讨论】:

      【解决方案3】:

      VB.Net 确实有 LEGACY Like Operator:

      将字符串与模式进行比较。

      您不能在.NET Core.NET Standard 中使用它,但是:

      .NET Core 和 .NET 目前不支持 Like 运算符 标准项目。

      如果你不介意,那么这里有一个例子:

      Dim filename As String = "Test2020.csv"
      Dim fileSearch As String = "Test*.csv"
      If filename Like fileSearch Then
          Debug.Print("Passed the pattern test.")
      Else
          Debug.Print("Did NOT pass the pattern test.")
      End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 2012-03-06
        • 1970-01-01
        • 2018-11-09
        • 2012-07-24
        • 2020-12-13
        • 1970-01-01
        相关资源
        最近更新 更多