【问题标题】:Want to remove various strings from filename before save想要在保存之前从文件名中删除各种字符串
【发布时间】:2017-06-11 00:20:32
【问题描述】:

我有一个为 Photoshop 编写的 JSX 脚本,在此脚本的末尾,在保存之前,我想检查各种字符串的文件名,如果存在则将其删除。到目前为止,我所写的只是删除了它遇到的数组中的第一个元素——在下面的情况下,它会遇到正则表达式,然后继续保存。

遇到的文件名示例为:“PRNT-AB-Navy Blush Oil palette painting-18x24--REV 27x21.jpg”

我希望得到的名称是:“AB-海军腮红油画”

所以我需要一点帮助来了解如何删除任何给定文件名中存在的数组的所有元素?

    var array = ["PRNT-", "--REV ", "-REV ", ".jpg", ".tif", ".psd", new RegExp(/\d+[x]\d+/g)];
    var docName = activeDoc.name
        for (var i = array.length; i >= 0; i--) {
            var newName = docName.replace(array[i], '');
        }

谢谢!

【问题讨论】:

    标签: javascript arrays jsx photoshop-script


    【解决方案1】:

    欢迎来到 Stack Overflow。

    我还没有制定出你的文件名约定,但这将用你想要的替换字符串,而不必遍历每个元素。

    var s = "PRNT-AB-Navy Blush Oil pallet painting-18x24--REV 27x21.jpg";
    
    alert(replace_filename(s));
    
    function replace_filename(str)
    {
      var rexp = new RegExp(/PRNT-|-\d*x\d*|--REV\s+\d*x\d*|.jpg|.tif.psd/gim);
       return str.replace(rexp, "");
    }
    
    // AB-Navy Blush Oil pallet painting
    

    【讨论】:

    • 神秘客人,我能够使用您提供的正则表达式使其像我需要的那样工作。我不是一个函数,而是var trimExt = activeDoc.namevar rexp = new RegExp(/PRNT-|-\d*x\d*|--REV\s+\d*x\d*|.jpg|.tif.psd/gim);var newName = trimExt.replace(rexp, "");,然后接下来的代码继续保存文件。感谢您的洞察力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2012-09-26
    • 2015-01-11
    相关资源
    最近更新 更多