これが正規表現になります。文字のグループの後に数字のグループが続くものと一致します。
Public Dim regex As Regex = New Regex( _
"^(?<prefix>.*?0*)(?<version>\d+)$", _
RegexOptions.IgnoreCase _
Or RegexOptions.CultureInvariant _
Or RegexOptions.Compiled _
)
これには、最初の文字である「プレフィックス」とバージョンを含む「バージョン」という 2 つの名前付きキャプチャ グループが含まれます。
バージョンを int にキャストしてインクリメントし、プレフィックスと新しいバージョンを連結して新しいバージョン番号を返します。
だから、あなたはこのようなもので終わるでしょう
Public versionRegex As Regex = New Regex( _
"^(?<prefix>.*?0*)(?<version>\d+)$", _
RegexOptions.IgnoreCase _
Or RegexOptions.CultureInvariant _
Or RegexOptions.Compiled _
)
Public Shared Function GetNextVersion(oldVersion As String) As String
Dim matches = versionRegex.Matches(oldVersion)
If (matches.Count <= 0) Then
Return oldVersion
End If
Dim match = matches(0)
Dim prefix = match.Groups.Item("prefix").Value
Dim version = CInt(match.Groups.Item("version").Value)
Return String.Format("{0}{1}", prefix, version + 1)
End Function