Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
;*************************************************************************** ;** List manipulation UDF ;** Craig Storey - cstorey@canada.com ;** 2001/04/11 ;** ;** ReverseList(list, delimiter) --> reverse any list ;** ReverseSort(list, delimiter) --> Sort Alphabetically then reverses ;** ForwardNumSort(list, delimiter) --> Sort Numerically ;** ReverseNumSort(list, delimiter) --> Sort Numerically then reverse ;** ;** For speed numerical sorts are limited to less than 12 digits. You can ;** easily modify the UDF to accomodate any number of digits. Just change the line ;** --> item=StrFixLeft(item,0,12) ;*************************************************************************** GOSUB DefineUDFs ;; Test ReverseList() list1="fred feed apple orange zebra" list2=ReverseList(list1, " ") Message("ReverseSort()", StrCat("Old list- ", list1, @CRLF, "ReverseList() list- ", list2)) ;; Test ReverseSort() list1="fred feed apple orange zebra" list2=ReverseSort(list1, " ") list3=ItemSort(list1, " ") Message("ReverseSort()", StrCat("Old list- ", list1, @CRLF, "ItemSort() list- ", list3, @CRLF, "ReverseSort() list- ",list2)) ;; Test ForwardNumSort() list1="1 23 43343 11 111 1111 43 12 13" list3=ForwardNumSort(list1, " ") Message("ForwardNumSort()", StrCat("Any # list- ", list1, @CRLF, "ForwardNumSort(# list)- ", list3)) ;; Test ReverseNumSort() list1="1 23 43343 11 111 1111 43 12 13" list2=ReverseNumSort(list1, " ") Message("ReverseNumSort()", StrCat("Old list- ", list1, @CRLF, "New list- ", list2)) ;; Test Delimiters list1=StrReplace(list1, " ", "|") list2=ReverseNumSort(list1, "|") Message("Delimiter = |", StrCat("Old list- ", list1, @CRLF, "New list- ", list2)) ;; Compare ReverseSort() and ReverseNumSort() list1="1 23 43343 11 111 1111 43 12 13" list2=ReverseNumSort(list1, " ") list3=ReverseSort(list1, " ") Message("Compare ReverseSort() and ReverseNumSort()", StrCat("Old list- ", list1, @CRLF, "ReverseSort() list- ",list3, @CRLF, "ReverseNumSort() list- ",list2)) ;; Compare ItemSort and ForwardNumSort() list1="1 23 43343 11 111 1111 43 12 13" list2=ItemSort(list1, " ") list3=ForwardNumSort(list1, " ") Message("Compare ItemSort and ForwardNumSort()", StrCat("Any # list- ", list1, @CRLF, "ItemSort(# list)- ", list2, @CRLF, "ForwardNumSort(# list)- ", list3)) Return :DefineUDFs #DefineFunction ReverseList(list, delimiter) revlist="" count=ItemCount(list, delimiter) For xx=1 to count item=ItemExtract(xx,list,delimiter) if xx==1 then revlist=item else revlist=Strcat(item,delimiter,revlist) Next Return revlist #EndFunction #DefineFunction ReverseSort(list, delimiter) revlist="" count=ItemCount(list, delimiter) list=ItemSort(list,delimiter) For xx=1 to count item=ItemExtract(xx,list,delimiter) if xx==1 then revlist=item else revlist=Strcat(item,delimiter,revlist) Next Return revlist #EndFunction #DefineFunction ReverseNumSort(list, delimiter) count=Itemcount(list, delimiter) newlist="" For xx=1 to count item=ItemExtract(xx,list,delimiter) item=StrFixLeft(item,0,12) newlist=StrCat(newlist, item,delimiter) Next list=ItemSort(newlist,delimiter) revlist="" For xx=1 to count item=ItemExtract(xx,list,delimiter) p=StrScan(item,"123456789",0,@fwdscan) item=Strsub(item,p,-1) if xx==1 then revlist=item else revlist=Strcat(item,delimiter,revlist) Next Return revlist #EndFunction #DefineFunction ForwardNumSort(list, delimiter) count=Itemcount(list, delimiter) newlist="" For xx=1 to count item=ItemExtract(xx,list,delimiter) item=StrFixLeft(item,0,12) newlist=StrCat(newlist, item,delimiter) Next list=ItemSort(newlist,delimiter) relist="" For xx=1 to count item=ItemExtract(xx,list,delimiter) itemlen=StrLen(item) p=StrScan(item,"123456789",0,@fwdscan) item=Strsub(item,p,itemlen-p+1) if xx==1 then relist=item else relist=Strcat(relist,delimiter,item) Next Return relist #EndFunction Return
Article ID: W15009
File Created: 2001:11:08:12:41:20
Last Updated: 2001:11:08:12:41:20