将文件名拆分为子字符串

时间:2018-02-20 12:54:52

标签: string vb.net substring

我有一个文件名,我需要从中分割和提取部分名称,以便在文档寄存器中对其进行排序。

文件通常采用以下格式:

  

“1098-GT-0006-R0 Report Template.docx”

我需要将此字符串拆分为以下三个部分:

  

文件号:1098-GT-0006

     

修订版:0

     

名称:报告模板

在vb.NET中实现这一目标的最佳方法是什么?

版本号可以是0到20之间的任何值(R0-R20),第一个数字“1098”可以是三位,四位或五位数。

2 个答案:

答案 0 :(得分:1)

如果您的字符串格式已修复,则以下脚本可能会对您有所帮助。这不是你问题的最佳解决方案,但你可以想到实现欲望的结果。

Private s As String = "1098-GT-0006-R0 Report Template.docx"
Private ss As String() = s.Split(" "c)
Private lastIndex As Int32 = ss(0).LastIndexOf("-"c)
Private DocumentNumber As String = ss(0).Substring(0, lastIndex)
Private Revision As String = ss(0).Substring(lastIndex + 2)
Private Name As String = System.IO.Path.GetFileNameWithoutExtension(String.Join(" ", ss(1), ss(2)))

答案 1 :(得分:0)

感谢Jaydip Jadhav和Andrew Morton的一个很好的建议,我设法解析了想要的文件名。当我首先获取文件名时,我使用了:

Dim BigString As String = IO.Path.GetFileNameWithoutExtension(<file path>)

然后我按如下方式解析名称:

        Dim LeftS As String
        Dim lastIndex As Int32
        Dim DocumentNumber As String
        Dim Revision As String
        Dim DocName As String


        LeftS = BigString.Substring(0, BigString.IndexOf(" "))
        lastIndex = LeftS.LastIndexOf("-"c)
        DocumentNumber = LeftS.Substring(0, lastIndex)
        Revision = LeftS.Substring(lastIndex + 2)
        DocName = BigString.Substring(BigString.IndexOf(" ") + 1)

如果有人认为这将是更好的解决方案,我仍然有兴趣看看如何使用Regex完成。