更改文件名

时间:2017-03-03 13:32:06

标签: c# regex asp.net-mvc

请考虑以下代码段

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 - Copy(1).png
  • AnotherFile - Copy(1).png

我希望文件名成为

  • MyFile的张复印-120170303131815555.png
  • AnotherFile-拷贝120170303131815555.png

如果使用regex或类似内容轻松解决此问题,或者我必须再次重新编写该方法并逐个检查每个值。

1 个答案:

答案 0 :(得分:3)

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

这匹配任意数量的数字并且是全局替换。