这是在一次<u>以正则表达式批量替换文本并加入递增序号</u>的需求开发过程中找到的文本处理软件,其实用JS原生也可以完成任务,但是骨子里的“惰性”迫使我必须找到一款方便复用这一功能的工具,即使发现的过程是漫长的。它非常好用,而且还有意外发现。
官方是这样描述这个来自战斗名族的工具的:
AkelPad - is an open source editor for plain text. It is designed to be a small and fast. (AkelPad 是一个开源的纯文本编辑器。被设计得轻巧快速。)
能想到的同类工具如Notepad++,但是AkelPad更轻。
下载安装
进入官网,下载该软件,当前版本为4.9.8,推荐64位带插件的。
下载安装后打开软件可以切换到中文界面(view -> language -> chinese -> 重启)。
通过正则替换文本的同时添加序号的方法
AkelPad支持JavaScript插件编程,在顶部菜单中选择“选项 -> 插件”,弹出插件列表,在其中选择“ContextMenu”、“Scripts”,然后重启。
再次打开后发现顶部菜单多了“Plugins”(这个词儿没有被汉化),在其中找到“Scripts...”,在弹出的“Scripts plugin”中选择“SearchReplace.js”,点击“Edit”按钮进行修改,我们在其中添加一个自定义的全局变量 myRegexTimes
(要注意不能和这个脚本文件中其他变量重名):
var myRegexTimes=0;
保存后,再次通过顶部菜单进入“Plugins -> Scripts... -> Scripts plugin”选中“SearchReplace.js”,这次点击“Exec”执行这个脚本,在弹出的对话框中勾选“Regular expressions”和“Replace with function”,查找范围选“Beginning”,接着就可以开始工作了,我们来看一个例子:
有这样一段文本:
abcde
要求<u>以空格分隔每个字母,并为每个字母加上递增序号</u>,先书写查询正则:
(.)
然后编写替换脚本:
myRegexTimes++; return myRegexTimes+'.'+$1+' ';
替换的结果如下:
1.a 2.b 3.c 4.d 5.e
就是这样!需要注意的是,每次执行替换都需要重新执行“SearchReplace.js”这个脚本,因为需要对 myRegexTimes 的值初始化为0,如果不重启 myRegexTimes 会接着上次执行结果继续递增。初次使用稍显麻烦,然而一劳永逸的事情绝对值得,想想有了这招,当再面对几百行需要格式化替换的文本,是不是会从容很多呢?
惊喜
AkelPad虽小,却包罗万象,几乎各种编辑器的功能都可以在插件中找到,包括行号、高亮、尺标、代码收展、提示……最让我受益的是“Machine Reading”,这会调取系统的语音引擎将文本以人声阅读出来,方便做文本校验,或者在代码写累的时候听上一段小说放松放松,甚至是把文字导出为音频文件,太棒了!
网友评论