複数の画像を出力するプログラムをVB.NETで作成しています。一部の画像は同じファイル名になります。同じ名前のファイルが複数ある場合は、ファイル名の末尾に「_1_」を追加します。「_1_」ファイルがすでに存在する場合は、1をインクリメントして「_2_」にします。このファイルがすでに存在する場合は、存在しないまで番号を増やし続けたいと思います。たとえば、「filename」、filename_1 _ "、"filename_2_"などです。これが私が試したコードです。
Dim usedFiles As New List(Of String)
While usedFiles.Contains(returnValue)
If Regex.IsMatch(returnValue, "[_]([0-9]{1,})[_]$") Then
returnValue = Regex.Replace(returnValue, "[_]([0-9]{1,})[_]$", "_" + (CType("$1", Integer) + 1).ToString() + "_")
Else
returnValue += "_1_"
End If
End While
usedFiles.Add(returnValue)
動作していない行は次のとおりです。
returnValue = Regex.Replace(returnValue, "[_]([0-9]{1,})[_]$", "_" + (CType("$1", Integer) + 1).ToString() + "_")
毎回「filename_2_」を出力します。私も試しました:
returnValue = Regex.Replace(returnValue, "[_]([0-9]{1,})[_]$", "_($1+1)_")
ただし、これは「filename _($ 1 + 1)_」を返します。「_」を削除してから番号に1を追加し、「_」を両側に戻すことができることはわかっていますが、正規表現を使用して他の言語(phpなど)でもこれを実行できることもわかっています。
何か案は?
ありがとう!
ライアン