



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UltraEdit编辑器使用技巧内置JS脚本前言:我使用的UE版本是14.20,应该是现今较通用版本。恕其他版本无暇多予比对。之前一直用Editplus,因速度比较快,功能也尚可,且以前版本的UE没什么独到之处,直到用了14.20,用了其强大的自定义功能,以及内置JS脚本(而非过于弱智的宏),才彻底抛弃Editplus,转而研究UE,并彻底被其吸引一、脚本使用首先讲讲UE使用脚本的好处和基本原理:使用脚本相当于是把外置的一个程序引用到编辑器之中,作为它的一个可执行命令,就好像我们UE中编辑-删除-删除至行尾;或者在word之中,可以选中一段内容-右键-选择格式相似的文本(这个例子可能不恰当,因为这已经不是纯文本编辑,而是附带了格式的。但其本质是一样的)。如果我们要使用自己特有的功能,而不是系统提供的呢?如果我要统计文本里面有多少个字符串”TEST”怎么做?我要统计只在行首显示的”TEST”怎么做?如果我不但要统计有多少个行首的”TEST”,还要把这些行都重新复制到一个新的文本,该怎么做?在数据量小的时候,可以手工操作,可如果这是一个50K的文本,估计一天之内,你就不用干别的了,如果是500K呢?!本质上来说脚本和宏的道理是一样的,只是宏靠的是录制,记录你一连串的操作,以便之后你再使用同样的操作的时候,可以仅仅点击一下鼠标或者用个快捷键,就实现了之前的一连串操作。但是如果你没有确定的操作该怎么办呢?就好像刚刚说的“不单要统计有多少个行首的”TEST”,并且还要把这些行都重新复制到一个新的文本”,这个操作到底该怎么录制,我还真说不清楚估计不录个十次八次的,谁都不知道自己的操作对不对。因此说,宏有它的局限性,不适于过于复杂的操作,当然宏本身也是可以编辑的,但是相对于脚本语言来说,晦涩难懂的宏语句绝对不是给人看的据说有“编辑器之神”之称的Emacs就是靠它的内置脚本编辑方法,维护着绝对老大的地位。我无缘接触Emacs,幸好UE也终于有了这个功能,并且用的还是比较普及的JS脚本。接下来,就从脚本开始吧:基本上教程都是以”Hello world”开始的,我也写了一个UltraEdit.activeDocument.write(Hello world!); /在当前活动窗口写入” Hello world!”UltraEdit.messageBox(Hello world!); /弹出消息框” Hello world!”UE-JS的”Hello world”,如下:首先,新建一个空的js文件(如t.js)。打开“脚本-脚本”,再弹出的窗口里点“添加”,引入刚刚写的空文件,然后选中刚刚引入的那个文件,编辑。写入上面的内容。在某一活动窗口,”脚本-t.js”。你就会看到窗口中写入了” Hello world!”,然后还有一个弹出框显示” Hello world!”,调试通过这个,就可以开始写其他的脚本程序了。我使用的例子数据如下:this is the test data. #this is the test data. this is the test data. this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. test #this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. test this is the test data. this is the test data. this is the test data. #this is the test data. this is the test data. this is the test data. this is the test data. this is the test data. this is the test data. this is the test data. this is the test data. this is the test data.二、程序举例1. 下面以刚刚的“如果我要统计文本里面有多少个字符串”TEST”怎么做?”为例,讲解UE-JS。UltraEdit.activeDocument.top(); /把光标移至文本的最顶端var str_f = test; /要搜索的字符串var cnt1 = 0; /个数统计UltraEdit.activeDocument.findReplace.find(str_f); /查找字符串 str_fwhile (UltraEdit.activeDocument.isFound() /如果找到要查询的字符串,则执行下面程序cnt1 = cnt1 + 1;UltraEdit.activeDocument.findReplace.find(str_f); /再一次查找UltraEdit.messageBox(共搜索到 + cnt1 + 个字符串); /弹出窗口显示结果以上程序相当于是用程序步骤模仿手工操作,并同时加上手动的计数。程序不会重新从头搜索,所以向下搜不到字符串的时候,就跳出循环,显示结果了。这个需求也有另一种办法来做全部通过标准的JS。此种方法不是很推荐,但本质上来说更加灵活,适于JS方面比较擅长者,在此我也写出来供大家参考。JS的function 我就不多做解释了,因为其很灵活,我只是随便用了一种。function count_str(text_all,str_f)var result = ; result = text_all.split(str_f);return result.length - 1;UltraEdit.activeDocument.selectAll(); /选择全部文本var text_all = UltraEdit.activeDocument.selection; /获取文本为字符串var str_f = test; /要搜索的字符串var cnt1 =count_str(text_all,str_f); /调用函数 count_strUltraEdit.messageBox(共搜索到 + cnt1 + 个字符串); /弹出窗口显示结果2. 我们再看“我要统计只在行首显示的”TEST”怎么做?”UltraEdit.activeDocument.top(); /把光标移至文本的最顶端UltraEdit.activeDocument.findReplace.regExp = true; /使用正则表达式查找var str_f = test; /要搜索的字符串:行首的testvar cnt1 = 0; /个数统计UltraEdit.activeDocument.findReplace.find(str_f); /查找字符串 str_fwhile (UltraEdit.activeDocument.isFound() /如果找到要查询的字符串,则执行下面程序cnt1 = cnt1 + 1;UltraEdit.activeDocument.findReplace.find(str_f); /再一次查找UltraEdit.messageBox(共搜索到 + cnt1 + 个字符串); /弹出窗口显示结果这个时侯就需要用到正则表达式了,正则表达式作为“非人类语言”,本身值得重新讲一次,但是网上已经有很多相关的资料,本人的水平也有限,就不再赘述了。各位可以自己去看看,UE本身也有正则表达式的参考,仔细研究研究都能明白。闲话少说,看程序:同上面第一个程序,这个也可以全部通过标准的JS来做。不过在这里再写出来意义不大。不再重复。3. 我们最后再看看“如果我不单要统计有多少个行首的”TEST”,并且还要把这些行都重新复制到一个新的文本,该怎么做?”这里不单要读,要匹配查询,还要写到其他的文件里,稍微要再多一个步骤。略有不同的地方是“UltraEdit.document0.write(line);”这一句,表示把一个字符串写到一个文档里面,UltraEdit.document0 表示的是UE打开窗口中的第一个窗口。请看程序:UltraEdit.activeDocument.top(); /把光标移至文本的最顶端UltraEdit.activeDocument.findReplace.regExp = true; /使用正则表达式查找var str_f = test; /要搜索的字符串:行首的testvar cnt1 = 0; /个数统计var line;UltraEdit.activeDocument.findReplace.find(str_f); /查找字符串 str_fwhile (UltraEdit.activeDocument.isFound() /如果找到要查询的字符串,则执行下面程序cnt1 = cnt1 + 1;UltraEdit.activeDocument.selectLine();line = UltraEdit.activeDocument.selection;UltraEdit.document0.write(line);UltraEdit.activeDocument.findReplace
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论