我目前有一个这种格式的分隔文件(3 列选项卡“\t”分隔)和“;” 分隔列中的所有元素)。
COL1\tCOL2\tCOL3
abc\t123;1q\tapple\t
dfg\t234;2w\tapple;apple\t
hij\t345;3e\tbanana;apple;cherry;\t
klm\t456;4r\tapple;banana;cherry;banana;cherry;\t
nop\t567;5t\t;;apple;banana;cherry;banana;;cherry;;\t
我想对优化的宏(理想情况下是 javascript)有任何想法来操作文件以输出:第 3 列现在已排序(也删除了任何额外/不需要的分隔符)并删除了重复项。新的第 4 列是去重元素计数。
abc\t123;1q\tapple\t1
dfg\t234;2w\tapple\t1
hij\t345;3e\tapple;banana;cherry\t3
klm\t456;4r\tapple;banana;cherry\t3
nop\t567;5t\tapple;banana;cherry\t3
我一直在尝试类似于下面的方法,但我认为这种方法可能会更快。
for( iRow = 2; iRow <= totalLines; iRow++ ) { //traverse eash row, start at 2nd row
str = document.GetCell(iRow, 2, eeCellIncludeQuotes);
var count = (str.match(/;/g) || []).length;
var numOfElements = count + 1;
document.SetCell( iRow, 3, numOfElements, eeAutoQuote );
}
所以用户应该选择他们想要运行的列(本例中的第 3 列),宏将只在该列上运行,并将计数输出到右侧的新列。
真正的源文件将有数百万行,所以如果这可以通过 EmEditor 以任何方式进行优化,那就太好了。