我有一个文件名,我需要从中分割和提取部分名称,以便在文档寄存器中对其进行排序。
文件通常采用以下格式:
“1098-GT-0006-R0 Report Template.docx”
我需要将此字符串拆分为以下三个部分:
文件号:1098-GT-0006
修订版:0
名称:报告模板
在vb.NET中实现这一目标的最佳方法是什么?
版本号可以是0到20之间的任何值(R0-R20),第一个数字“1098”可以是三位,四位或五位数。
答案 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完成。