按字母顺序排列列表

时间:2016-03-14 21:22:21

标签: autohotkey alphabetical alphabet alphabetical-sort

我正在寻找一种真正按字母顺序排列列表的方法。假设它是一个基本单词列表,例如:
黑色绿色
红色蓝色糯蜡
生活
多孔
实心
液体
紫罗兰

有没有办法修改这个代码,按字母顺序排列"红色"来之前" Solid"?这就是我到目前为止所拥有的:

SaveVar=%ClipboardAll%
Clipboard=
Send ^c
ClipWait, 0.5
Sort clipboard, CL
;Process exceptions
Sort := RegExOmit (Sort, "The")
Send ^v
Sleep 100
Clipboard=%SaveVar%
SaveVar=
return

1 个答案:

答案 0 :(得分:0)

编写一个忽略起始"The "子字符串的自定义比较函数。

list = Black`nGreen`nThe Red`nBlue`nWaxy`nLiving`nPorous`nSolid`nLiquid`nViolet`nThe Azure

Sort , list , F Compare
MsgBox, %list%

Compare( a , b )
{
    arem := RegExReplace(a, "A)The " , "" )
    brem := RegExReplace(b, "A)The " , "" )

    return arem > brem ? 1 : arem < brem ? -1 : 0
}

正则表达式用于从字符串中删除子串"The ",并将结果存储在临时字符串中,然后用于比较。

子字符串必须从字符串的开头开始,正则表达式选项A),并且必须在The之后立即包含空格。