我有一种方法可以将选定的图像从一个复制OpenFileDialog
到一个定义的位置,我想检查是否存在同名的图像,如果存在则动态更改名称。
这是我的方法:
public void SaveImage(IList<AppConfig> AppConfigs, string ImageNameFilter)
{
string imgPath = AppConfigs[0].ConfigValue.ToString();
Int32 i = 0;
StringBuilder sb = new StringBuilder(selectedFileName);
while (File.Exists(imgPath + "\\" + ImageNameFilter + selectedFileName))
{
sb.Insert(i, 0);
i++;
//ImageNameFilter += (i++).ToString();
}
File.Copy(selectedFile, imgPath + "\\" + ImageNameFilter + selectedFileName);
}
ImageNameFilter
是添加在每个图像开头的自定义过滤器,用户需要此前缀才能识别图像的用途,仅通过查看前缀即可。selectedFileName
是用 拍摄的图像的名称SafeFileName
,这意味着它看起来像这样 - imageName.jpeg
。
这段代码有几个问题。首先,我想像这样更改名称 - imageName1.jpeg, imageName2.jpeg, imageName3.jpeg...imageName14.jpeg..
,但如果我使用selectedFileName
的+=
所有内容都添加了,即使在 之后.jpeg
,这也不是我想要的。我能想到的唯一解决方案是使用regex
,但我真的想找到另一种方法。
此外,递增i++
和添加它+=
会导致不需要的结果,即 :
imageName1.jpeg, imageName12.jpeg, imageName123.jpeg...imageName1234567.jpeg
。
那么,我怎样才能得到我想要的结果,我在这里看到的折衷方案是_
在 theImageNameFilter
之后添加下划线,然后i
在selectedFileName
默认情况下在而不是末尾添加下划线。但是在字符串的开头添加一些东西也是我不知道该怎么做的事情。如您所见,我尝试了StringBuiledr
+ Insert
,但没有得到预期的结果。