www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - sort strings by interpreting them as integrals

reply Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
void main()
{
    string[] x = ["_100", "_10", "_20"];
    sort(x);
    writeln(x);
}

result:
["_10", "_100", "_20"]

I need to treat these as if they were integrals, although the
underscore complicates things here since it should be ignored. So the
result I want is:
["_10", "_20", "_100"]

How would you implement that? It could be a nice exercise! :)
Jul 29 2012
next sibling parent "bearophile" <bearophileHUGS lycos.com> writes:
Andrej Mitrovic:

 void main()
 {
     string[] x = ["_100", "_10", "_20"];
     sort(x);
     writeln(x);
 }

 result:
 ["_10", "_100", "_20"]

 I need to treat these as if they were integrals, although the
 underscore complicates things here since it should be ignored. 
 So the
 result I want is:
 ["_10", "_20", "_100"]

import std.stdio, std.algorithm, std.conv; void main() { auto data = ["_100", "_10", "_20"]; schwartzSort!(s => to!int(s[1 .. $]))(data); writeln(data); } Bye, bearophile
Jul 29 2012
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 7/30/12, bearophile <bearophileHUGS lycos.com> wrote:
 import std.stdio, std.algorithm, std.conv;
 void main() {
      auto data = ["_100", "_10", "_20"];
      schwartzSort!(s => to!int(s[1 .. $]))(data);
      writeln(data);
 }

Very nice! Thanks.
Jul 29 2012