我遇到了一个奇怪的问题,我似乎无法弄明白。
我的文件名是这样的:
DER 1513016-3.020F.NCF.
我希望能够将其更改为:
DER 1513016-3.020H.NCF
有时文件名也可以这样:
DER 1513016-3.020F_NEW.NCF
将改为:
DER 1513016-3.020H_NEW.NCF
这是我的代码:
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Open";
fDialog.Filter = "NCF files (*.ncf)|*.ncf|All files (*.*)|*.*";
fDialog.InitialDirectory = "C:\\Program Files";
if (fDialog.ShowDialog() == DialogResult.OK)
{
string newfilename;
string fileext = Path.GetExtension(fDialog.FileName);
newfilename = Regex.Replace(fDialog.FileName, "F.NCF", "H.NCF");
newfilename = Regex.Replace(fDialog.FileName, "F_NEW.NCF", "H_NEW.NCF");
}
这就是事情变得奇怪的地方。代码现在的工作方式,它不会将文件名更改为DER 1513016-3.020H.NCF
如果我注释掉这行代码:
//newfilename = Regex.Replace(fDialog.FileName, "F_NEW.NCF", "H_NEW.NCF");
它将正常工作,文件现在将变为:DER 1513016-3.020H.NCF
但是,如果我取消注释该行代码,则文件名不会更改为DER 1513016-3.020H.NCF.
它将保持为DER 1513016-3.020F.NCF.
为什么这行代码会导致例程不更改文件名?
答案 0 :(得分:2)
在第二次通话中使用newfilename
代替fDialog.FileName
,或者永远不会使用第一次通话的返回值。
PS:您可以使用String.Replace
代替Regex.Replace
,因为您没有使用任何正则表达式。另外,点表示正则表达式中的“任何字符”,因此您应该考虑转义它。