我有一个结合使用JavaScript和UltraEdit脚本的程序。该程序具有在文件/选项卡中搜索的字符串数组。如果找到,它将相应的行移动到新文件/选项卡。使用完全匹配时,效果很好。

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

这是我在UltraEdit中作为脚本执行的代码。为了说明起见,我从包含的50个值中截断了该数组。

// 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

最佳答案

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

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

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参数以运行区分大小写(更快)的正则表达式搜索。

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

关于javascript - 使用JavaScript和通配符的UltraEdit脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18117633/

10-11 13:59