簡體   English   中英

更改文件名時Regex.Replace()出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM