我正在 VB.NET 中创建一个程序来输出多个图像。某些图像将具有相同的文件名。如果有多个同名文件,我想在文件名末尾添加“_1_”。如果“_1_”文件已经存在,我想将 1 增加到“_2_”。如果这个文件已经存在,我想继续增加数字直到它不存在。例如“文件名”、“文件名_1_”、“文件名_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)中完成。
有任何想法吗?
谢谢!
瑞安