AHK:从列表中删除重复项,并将重复项添加到相应的列表项

时间:2019-05-20 18:59:32

标签: autohotkey

我想要一个AutoHotkey代码,该代码将从列表中删除重复项,同时还将重复计数添加到相应的列表项(即“ x 2”)。

这是一个示例列表:

myList =
)
apple
banana
apple
apple pie
banana
apple
)

这是所需的结果列表:

myList =
(
apple x 3
banana x 2
apple pie
)

我是AHK的新手,并且代码一般。我发现了许多删除重复项的好代码,但是没有一个可以如上所述计算它们。我自己的解决方案可能非常简单:将唯一的项目(上面的“苹果派”)放入变量中,将重复的项目(“香蕉,苹果”的所有实例)放入单独的变量中,对/计数例如重复项,然后将两个变量组合在一起以生成“所需结果列表”。但是,由于子字符串问题,我自己的代码无法正常工作。最好不要使用我的代码来淡化这个问题,而最好从经验更丰富,简洁的方法开始。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

MsgBox % CountList( MyList )

CountList( _list ) {
    l := StrSplit(_list,"`n"), out:="`n"
    for i, a in l {
        c:=0
        for j, b in l
            c := (a = b) ? c + 1 : c                
        if !(InStr(out, "`n" a "`t"))
            out .= a (c > 1 ? "`t x " c "`n" : "`n")
    }
    return Trim(out, "`n")
}