下午,
如何在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个字符(正在日期)并继续使用其余的代码?
请告知。 甲
答案 0 :(得分:2)
如果您将拆分呼叫和长度检查更改为:
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