为了账号安全,请及时绑定邮箱和手机立即绑定

更改对列表重新编号的 Javascript 代码

更改对列表重新编号的 Javascript 代码

撒科打诨 2022-12-29 10:30:11
我不熟悉 Javascript,但我想更改以下代码。目前,它以 01)、02) 等格式重命名程序 Keyboard Maestro 中的宏。我希望它只使用数字后跟空格的格式(即 1 、 2 等)我希望我描述的是有道理的。谢谢!第1部分:(function(inDesignMode) {'use strict';function dump(obj, desc) {    console.log((desc ? desc + ": " : "") + JSON.stringify(obj, null, "\t"));}var KMEditor = (function() {    var _editorAppName = "Keyboard Maestro";    var _editorApp;    return {        getEditorApp: function() {            return _editorApp ? _editorApp : _editorApp = Application(_editorAppName);        getEditorAppName: function() {return _editorAppName;},        getSelectedMacrosOrGroups: function() {            return this.getEditorApp().selectedmacros();        }    };})();var KMEngine = (function() {    var _engineApp;    return {        getAllMacrosSourceFileName: function() {            return this.getAppSupportFolderName() + "Keyboard Maestro Macros.plist";        },        getAppSupportFolderName: function() {            var app = Application.currentApplication();            app.includeStandardAdditions = true;            return app.pathTo('application support', { from: 'user domain' }) +                "/Keyboard Maestro/";        },        getEngineAppName: function() {            return "Keyboard Maestro Engine";        },        getEngineApp: function() {            if (!_engineApp)                _engineApp = Application(this.getEngineAppName());            return _engineApp;        },        readPlistBinaryFile: function(path) {            var data = $.NSData.dataWithContentsOfFile(path);            return ObjC.deepUnwrap(                $.NSPropertyListSerialization.propertyListWithDataOptionsFormatError(                    data, $.NSPropertyListBinaryFormat_v1_0, 0, null));        },    };})();function getMacrosInfo(selectedMacroUUIDs) {    function getMacroName(macro) {        if (macro.Name)            return macro.Name;        throw Error("Un-named Macro UUID: " + macro.UID);    }
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

根据您的评论中获得的澄清,这就是您需要的:

01)macro-->1 macro

为此,您可以尝试execute()在第 2 部分的函数中添加以下行:

const regExp = /^0(.)\)/i; //Creates the regular expression
newName.replace(regex, '$1 '); //Replaces the match from the regex with a substring
macro.name = newName;

这是一个正则表达式子字符串替换(此处有更多详细信息)。这是正在做的事情的细目分类。

^符号表示正在从字符串的开头搜索子字符串。

接下来只是在字符串开头对0a 进行字面搜索。0

接下来(开始一个带括号的子匹配字符串,稍后将解释其用途。

.表示任何单个字符。

带括号的子匹配字符串的下一个)结尾较早开始。

接下来\)是搜索)需要转义的字面值,\因为如上所述,)它具有结束带括号的子匹配字符串的特殊含义。

现在,使用带括号的子匹配字符串,以便在与正则表达式匹配后,结果可以进一步用于替换匹配的字符串。在这种情况下,

01)macro1作为带括号的子匹配字符串匹配,因为它是前导 0 之后和 . 之前的单个字符)。这$1在 replace 函数中使用,以便在 matching 之后01),它被替换为1 (注意额外的空间,这是问题所要求的)。


查看完整回答
反对 回复 2022-12-29
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信