[英]Problem with Regex.Replace() while changing a filename
我遇到了一個奇怪的問題,似乎無法解決。
我的文件名是這樣的:
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.
為什么那行代碼導致例程不更改文件名?
在第二個調用上使用newfilename
而不是fDialog.FileName
,否則將永遠不會使用第一個調用的返回值。
PS:因為不使用任何正則表達式,所以可以使用String.Replace
代替Regex.Replace
。 另外,點在正則表達式中表示“任何字符”,因此您應考慮將其轉義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.