VB.Net-如何定制函数以读取新文件名结构的日期?

VB.Net-如何定制函数以读取新文件名结构的日期?,vb.net,Vb.net,下午, 如何在VB.net中定制以下函数以拾取数组中文件名第二部分的前8个字符 Private Function GetFormattedDateFromFileName(ByVal fileName As String) As String Dim parts() As String = fileName.Split("-") If parts.Length = 3 Then Dim dt As DateTime If DateTime.TryP

下午,

如何在VB.net中定制以下函数以拾取数组中文件名第二部分的前8个字符

Private Function GetFormattedDateFromFileName(ByVal fileName As String) As String
    Dim parts() As String = fileName.Split("-")
    If parts.Length = 3 Then
        Dim dt As DateTime
        If DateTime.TryParseExact(parts(1), "yyyyMMdd", Nothing, Globalization.DateTimeStyles.None, dt) Then
            Return dt.ToString("MM/dd/yyyy")
        End If
    End If
    Return ""
End Function
我以前使用过这个函数,因为文件名会分为3部分,所以这个函数对我来说非常适合。以前的文件名如下所示:

542656-20130402-FTO Disclosure.pdf
548872-20120501-Funds a.pdf
848581-20110215-Alpha.pdf
现在的问题是文件名结构已经更改,现在将分为两部分,如下所示:

542656-20130402.pdf
548872-20120501.pdf
848581-20110215 Alpha.pdf
652162-20120711 a.pdf
那么,我将如何定制上述函数,使其仍然使用“-”分隔文件名,而不是尝试精确解析日期,以便只查看第二部分(即日期)的前8个字符,并继续处理其余代码

请告知。
A

如果您将拆分呼叫和长度检查更改为:

Dim parts() As String = fileName.Split("-"c, "."c, " "c)
If parts.Length > 2 Then
那么现有代码应该在两个版本上都能正常工作


根据评论进行编辑:

为了在“12764-20120124b.pdf”这样的文件上执行此操作,您只需直接提取子字符串:

Private Function GetFormattedDateFromFileName(ByVal fileName As String) As String
    Dim parts() As String = fileName.Split("-")
    If parts.Length > 1 AndAlso parts(1).Length >= 8 Then
        Dim dt As DateTime
        Dim dtStr = parts(1).Substring(0, 8)
        If DateTime.TryParseExact(dtStr, "yyyyMMdd", Nothing, Globalization.DateTimeStyles.None, dt) Then
            Return dt.ToString("MM/dd/yyyy")
        End If
    End If
    Return ""
End Function

感谢里德,它确实有效,但在像“12922-2012016.pdf,12764-20120124b.pdf”这样的文件中,它没有任何影响。有什么想法吗?@Andrea在这种情况下,你需要提取一个子字符串-我会edit@Andrea已编辑的帖子,使用String.Substring将该部分提取出来,以显示选项