【问题标题】:Changing file name更改文件名
【发布时间】:2017-03-03 13:32:05
【问题描述】:

考虑下面的代码sn-p

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

这基本上会在用户上传的任何文件上放置一个日期时间戳。现在这很好用,文件名类似于

  • 我的文件.png
  • 另一个文件.png

现在我正在尝试更改此方法,因此如果文件名类似于

  • 我的文件 - 复制 (1).png
  • 另一个文件 - 复制 (1).png

我希望文件名变成

  • MyFile-Copy-120170303131815555.png
  • AnotherFile-Copy-120170303131815555.png

如果有 regex 或类似的简单解决方案,或者我是否必须重新编写该方法并一一检查每个值。

【问题讨论】:

    标签: c# regex asp.net-mvc


    【解决方案1】:
    return string.Concat(
          Regex.Replace(Path.GetFileNameWithoutExtension(fileName), @" - Copy\s*\(\d+\)", "-Copy-", RegexOptions.IgnoreCase),
          DateTime.Now.ToString("yyyyMMddHHmmssfff"),
          Path.GetExtension(fileName));
    

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

    【讨论】:

    • 谢谢你,我将如何适应文件名 MyFile - copy(1).png
    • MyFile-Copy-20170303140526319.png 将是结果
    • 如果 Copy 是小写的,正则表达式是否仍然匹配?
    • RegexOptions.IgnoreCase 表示Copy 可以是任何大小写/大小写混合。
    • 再次感谢,感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多