我不熟悉 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;
这是一个正则表达式子字符串替换(此处有更多详细信息)。这是正在做的事情的细目分类。
该^
符号表示正在从字符串的开头搜索子字符串。
接下来只是在字符串开头对0
a 进行字面搜索。0
接下来(
开始一个带括号的子匹配字符串,稍后将解释其用途。
.
表示任何单个字符。
带括号的子匹配字符串的下一个)
结尾较早开始。
接下来\)
是搜索)
需要转义的字面值,\
因为如上所述,)
它具有结束带括号的子匹配字符串的特殊含义。
现在,使用带括号的子匹配字符串,以便在与正则表达式匹配后,结果可以进一步用于替换匹配的字符串。在这种情况下,
01)macro
将1
作为带括号的子匹配字符串匹配,因为它是前导 0 之后和 . 之前的单个字符)
。这$1
在 replace 函数中使用,以便在 matching 之后01)
,它被替换为1
(注意额外的空间,这是问题所要求的)。
添加回答
举报
0/150
提交
取消