My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members

Simple implementation of IComparer for "natural" sorting of mixed content types such as numeric, datetime and strings via "chunks" aka "tokens".

Has support for natural sorting of Dictionary/Hashtables by a specific column as well as Lists/Arrays.

examples

NaturalSort - test sorting values in list

before ["img100.jpg","img10.jpg","img2.jpg"]
after ["img2.jpg","img10.jpg","img100.jpg"] (90ms)

before ["car.mov","01alpha.sgi","001alpha.sgi","my.string_41299.tif","organic2.0001.sgi"]
after ["001alpha.sgi","01alpha.sgi","car.mov","my.string_41299.tif","organic2.0001.sgi"] (8ms)

before ["./system/kernel/js/01_ui.core.js","./system/kernel/js/00_jquery-1.3.2.js","./system/kernel/js/02_my.desktop.js"]
after ["./system/kernel/js/00_jquery-1.3.2.js","./system/kernel/js/01_ui.core.js","./system/kernel/js/02_my.desktop.js"] (2ms)

before ["1.0.2","1.0.1","1.0.0","1.0.9"]
after ["1.0.0","1.0.1","1.0.2","1.0.9"] (10ms)

before ["10/12/2008","10/11/2008","10/11/2007","10/12/2007"]
after ["10/11/2007","10/12/2007","10/11/2008","10/12/2008"] (0ms)

before ["2/15/2009 1:46 PM","1/15/2009 1:45 PM","2/15/2009 1:45 AM"]
after ["1/15/2009 1:45 PM","2/15/2009 1:45 AM","2/15/2009 1:46 PM"] (0ms)

before ["Saturday, July 3, 2010 1:45:30 PM","Saturday, July 3, 2010 1:45:29 PM","Monday, August 2, 2010 1:45:01 PM","Monday, May 3, 2010 1:45:00 PM"]
after ["Monday, May 3, 2010 1:45:00 PM","Saturday, July 3, 2010 1:45:29 PM","Saturday, July 3, 2010 1:45:30 PM","Monday, August 2, 2010 1:45:01 PM"] (0ms)

before ["192.168.0.100","192.168.0.1","192.168.1.1","192.168.0.250"]
after ["192.168.0.1","192.168.0.100","192.168.0.250","192.168.1.1"] (2ms)

before ["asd1.3",2,"asd1.2",1]
after [1,2,"asd1.2","asd1.3"] (1ms)

before ["z22","z20","z 19","z1","z 0","y 1"]
after ["y 1","z 0","z1","z 19","z20","z22"] (1ms)

before ["001","0034","01","0001","0032"]
after ["0001","001","0032","0034","01"] (0ms)

NaturalSort - test sorting by specific column in nested dictionary in list

before [{"col":"img100.jpg"},{"col":"img10.jpg"},{"col":"img2.jpg"}]
after [{"col":"img2.jpg"},{"col":"img10.jpg"},{"col":"img100.jpg"}] (1ms)

before [{"col":"1.0.2"},{"col":"1.0.1"},{"col":"1.0.0"},{"col":"1.0.9"}]
after [{"col":"1.0.0"},{"col":"1.0.1"},{"col":"1.0.2"},{"col":"1.0.9"}] (2ms)

before [{"col":"10/12/2008"},{"col":"10/11/2008"},{"col":"10/11/2007"},{"col":"10/12/2007"}]
after [{"col":"10/11/2007"},{"col":"10/12/2007"},{"col":"10/11/2008"},{"col":"10/12/2008"}] (0ms)

before [{"col":"192.168.0.100"},{"col":"192.168.0.1"},{"col":"192.168.1.1"},{"col":"192.168.0.250"}]
after [{"col":"192.168.0.1"},{"col":"192.168.0.100"},{"col":"192.168.0.250"},{"col":"192.168.1.1"}] (1ms)

before [{"col":"asd1.3"},{"col":2},{"col":"asd1.2"},{"col":1}]
after [{"col":1},{"col":2},{"col":"asd1.2"},{"col":"asd1.3"}] (1ms)

Powered by Google Project Hosting