haichen
Joined: 05 Feb 2007 Posts: 140 Location: Osnabrück, Germany
|
Posted: Tue Sep 16, 2008 4:43 pm Post subject: [Func] sort by numbers within a string |
|
|
Maybe someone has need for it.
| Code: | MyVar1 = asdTest - 12 - Bla`nTest - 13 - Bla`naTest - 4 - Blabla`nTest - 8 - Bla`nTest - 14 - Bla`nTest - 5 - Bla`nTest - 6 - Bla`nTest - 7 - Bla`nTest - 1 - Bla`nTest - 10 - Bla`nTest - 11 - Bla`nTest - 2 - Bla`nTest - 3 - Bla`nTest - 9 - Bla`nTest - 15 - Bla
MyVar = asadaz5.txt,z3.txt,z7.txt,z9.txt,hghjghz1.txt,zsdf13.txt,z999.txt,z-4.txt
MsgBox % sortByNumberWithin(MyVar,",")
MsgBox % sortByNumberWithin(MyVar1,"`n")
sortByNumberWithin(str,del)
{
x=`````````````````
loop,parse,str,%del%
{
RegExMatch( a_loopfield,"(\D*)(-?\d*)(.*)",nbr )
nl.=strlen(nbr1) . ","
}
Sort nl,R N D,
StringSplit, mL,nl,`,
ml:=ml1
astr=
loop,parse,str,%del%
{
RegExMatch( a_loopfield,"([a-zA-Z]+|\D*)-?\d+",nbr ) ;([a-zA-Z]+)-?\d+
sal:=ml-strlen(nbr1)+1
sa:=substr(x,1,sal)
astr.=sa . a_loopfield . ","
}
start:=ml+2
Sort astr,P%start% N D,
StringReplace, astr,astr,``,,all
StringReplace, astr,astr,`,,%del%,all
StringTrimRight, astr, astr, 1
return astr
} |
Result:
| Quote: | ---------------------------
sorttest.ahk
---------------------------
asadaz5.txt,z3.txt,z7.txt,z9.txt,hghjghz1.txt,zsdf13.txt,z999.txt,z-4.txt
->
z-4.txt,hghjghz1.txt,z3.txt,asadaz5.txt,z7.txt,z9.txt,zsdf13.txt,z999.txt
---------------------------
asdTest - 12 - Bla
Test - 13 - Bla
aTest - 4 - Blabla
Test - 8 - Bla
Test - 14 - Bla
Test - 5 - Bla
Test - 6 - Bla
Test - 7 - Bla
Test - 1 - Bla
Test - 10 - Bla
Test - 11 - Bla
Test - 2 - Bla
Test - 3 - Bla
Test - 9 - Bla
Test - 15 - Bla
->
Test - 1 - Bla
Test - 2 - Bla
Test - 3 - Bla
aTest - 4 - Blabla
Test - 5 - Bla
Test - 6 - Bla
Test - 7 - Bla
Test - 8 - Bla
Test - 9 - Bla
Test - 10 - Bla
Test - 11 - Bla
asdTest - 12 - Bla
Test - 13 - Bla
Test - 14 - Bla
Test - 15 - Bla | 
Last edited by haichen on Wed Sep 17, 2008 1:39 am; edited 2 times in total |
|