String 将文件名拆分为子字符串

String 将文件名拆分为子字符串,string,vb.net,substring,String,Vb.net,Substring,我有一个文件名,我需要从中拆分和提取部分名称,以便在文档注册表中对其进行排序 这些文件通常采用以下格式: “1098-GT-0006-R0报告模板.docx” 我需要将此字符串分为以下三个部分: 文件编号:1098-GT-0006 修订:0 名称:报告模板 在vb.NET中实现这一点的最佳方法是什么 修订号可以是0到20(R0-R20)之间的任何数字,第一个数字“1098”可以是三位、四位或五位数字 如果您的字符串格式是固定的,那么下面的脚本可能会帮助您。这并不是解决你们问题的最好办法,但你们可

我有一个文件名,我需要从中拆分和提取部分名称,以便在文档注册表中对其进行排序

这些文件通常采用以下格式:

“1098-GT-0006-R0报告模板.docx”

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

文件编号:1098-GT-0006

修订:0

名称:报告模板

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


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

如果您的字符串格式是固定的,那么下面的脚本可能会帮助您。这并不是解决你们问题的最好办法,但你们可以想出办法来达到你们想要的结果

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)))

多亏了Jaydip Jadhav和Andrew Morton的建议,我成功地解析了所需的文件名。当我首先获取文件名时,我使用:

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

如果有人认为这是一个更好的解决方案,我仍然有兴趣看看如何使用Regex实现这一点

首先,我将获得不带扩展名的文件名:。其次,我将查看文件名的实际规范,而不是考虑一个“典型”的情况。然后我可以选择一个合适的解析方法。看看使用正则表达式来捕获信息组。到目前为止你试过什么?
        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)