首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaScript和通配符编写UltraEdit脚本

使用JavaScript和通配符编写UltraEdit脚本
EN

Stack Overflow用户
提问于 2013-08-08 11:57:37
回答 1查看 1.9K关注 0票数 1

我有一个程序使用JavaScript和UltraEdit脚本的组合。程序有一个要在文件/选项卡中搜索的字符串数组。如果找到,它会将相应的行移到新的文件/选项卡中。当使用精确匹配时,它工作得很好。

但是,我的源值并不是完全匹配的。文件中的值是#-##,其中破折号后的值是不同的。我的价值一直到破折号。我尝试将通配符构建到数组值中,并尝试将其连接到.find函数,但没有成功。任何想法都将不胜感激。

下面是我在UltraEdit中作为脚本执行的代码。出于演示的目的,我已经将数组中包含的50个值截断。

代码语言:javascript
复制
// Start at the beginning of the file
UltraEdit.activeDocument.top();

// Search string variable used for copying of lines
//DD011881 - Building an array of values
var delString = new Array()
delString[0] = "'99999999'";
delString[1] = "'169-*'";
delString[2] = "'5482-*'";
delString[3] = "'5998-*'";
delString[4] = "'36226-*'";
delString[5] = "'215021-*'";


// Array loop value
var x = 0;
var arrayLen = delString.length

// Start with nothing on the clipboard
UltraEdit.clearClipboard();

for (x=0; x<arrayLen; x++)
{

    // Establish our search string for the loop condition
    var bFound = false;

    while (UltraEdit.activeDocument.findReplace.find(delString[x])){

        UltraEdit.activeDocument.selectLine();
        UltraEdit.activeDocument.copyAppend("^c" + "\n");
        bFound = true;
    }

    UltraEdit.activeDocument.top();
    if (bFound) {
        UltraEdit.document[6].paste();
        UltraEdit.activeDocument.top();
        UltraEdit.clearClipboard();
    }
} // For Loop
EN

回答 1

Stack Overflow用户

发布于 2013-12-06 23:33:50

在UltraEdit脚本中,您希望在while循环中运行UltraEdit正则表达式find,但您从未设置过正则表达式引擎或任何find参数。因此,脚本使用查找的内部默认值执行查找(不区分大小写,向下搜索非正则表达式,不匹配选中的Perl正则表达式引擎的整个单词)。

在命令UltraEdit.clearClipboard();下面的UltraEdit脚本中插入以下行:

代码语言:javascript
复制
UltraEdit.ueReOn();
UltraEdit.activeDocument.findReplace.mode = 0;
UltraEdit.activeDocument.findReplace.matchCase = true;
UltraEdit.activeDocument.findReplace.matchWord = false;
UltraEdit.activeDocument.findReplace.regExp = true;
UltraEdit.activeDocument.findReplace.searchDown = true;

if (typeof(UltraEdit.activeDocument.findReplace.searchInColumn) == "boolean") {

    UltraEdit.activeDocument.findReplace.searchInColumn = false;
}

现在,为脚本选择了UltraEdit正则表达式,并为运行区分大小写(更快)的正则表达式搜索设置了find参数。

请从命令UltraEdit.activeDocument.copyAppend()中删除"^c" + "\n",因为此命令不带任何参数。使用上面的命令,包括行终止符在内的整个行都已被选中,并且此选择被附加到剪贴板,而不是您放入命令copyAppend()的括号中的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18117633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档