let 连续复制_文件夹复制的命名算法(仿mac)

需求:一个文件夹被复制,要求新文件夹的名字合适且不重复。

在 nodejs后端,我在实现文件夹复制的功能时,发现简单的给原名子添加 “的副本” 作为新名字,复制多次的话得到的“...的副本的副本...”特别长,且没有什么意义,于是决定模仿 mac 的文件复制的命名的表现,写了个命名算法。 这个算法的代码实现很简单,难的是理解需求和详细规则(即为什么要这么做)。

关于mac文件重命名的规则

每次复制文件,如果不是“的副本”结尾的文件,复制的新文件会加上“的副本( n)”,这里的n是自然数字,不含前导零。括号是指可能有,也可能没有空格和数字

如果原文件名是“的副本”结尾,复制出的新文件的名字会加上“ n”。

如果原文件名是“的副本 n”,复制出的新文件名结尾的数字会比原名的索引大且向上最接近原名且不和其他文件重名。

复制时,如果原文件夹是“的副本”加上有前导0时,会去掉前导0,并应用上一条规则。

文件夹视为文件,即创建的新文件名不能和当前文件夹下的文件重名

只要明确了重命名的详细规则,我们就很容易明确如何算法的实现细节。

2019.3.25更新

优化 重写了代码,包装成一个方法,可以自定义后缀名。

/**

* 文件复制的命名算法

* @param {string} oName 被复制的文件的名称

* @param {Array} filenames 目录下的所有文件名数组

* @param {string} suffix 后缀(默认为'的副本')

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值