2017-03-03 137 views
1

考慮下面的代碼片段更改文件名

public static string AppendDateTimeToFileName(this string fileName) 
{ 
    return string.Concat(
     Path.GetFileNameWithoutExtension(fileName), 
     DateTime.Now.ToString("yyyyMMddHHmmssfff"), 
     Path.GetExtension(fileName)); 
} 

這基本上把日期時間的郵票是由用戶上傳的任何文件。現在這個偉大的工程是文件名是一樣的東西

  • MyFile.png
  • AnotherFile.png

現在我想要這樣,如果文件名是一樣的東西

改變這種方法
  • MyFile的 - 複製(1)png格式
  • AnotherFile - 複製(1)png格式

我想要的文件名,成爲

  • MyFile的 - 複製 - 120170303131815555.png
  • AnotherFile - 複製 - 120170303131815555.png

如果有一個簡單的soltuion這與regex或類似,還是必須重新編寫該方法,並逐一檢查每個值。

回答

3
return string.Concat(
     Regex.Replace(Path.GetFileNameWithoutExtension(fileName), @" - Copy\s*\(\d+\)", "-Copy-", RegexOptions.IgnoreCase), 
     DateTime.Now.ToString("yyyyMMddHHmmssfff"), 
     Path.GetExtension(fileName)); 

這匹配任何數字的數字,是全局替換。

+0

謝謝你,我將如何容納一個文件名** MyFile - copy(1).png ** – Code

+0

'MyFile-Copy-20170303140526319.png'將會是結果 –

+0

如果** Copy **是小寫的正則表達式還會匹配嗎? – Code