Sort characters in string

Biotronic simen.kjaras at gmail.com
Wed Dec 6 09:25:20 UTC 2017


On Wednesday, 6 December 2017 at 08:59:09 UTC, Fredrik Boulund 
wrote:
> string word = "longword";
> writeln(sort(word));
>
> But that doesn't work because I guess a string is not the type 
> of range required for sort?

Yeah, narrow (non-UTF-32) strings are not random-access, since 
characters like 💩 take up more than one code unit, and so "💩"[0] 
returns an invalid piece of a character instead of a  full 
character.

In addition, sort does in-place sorting, so the input range is 
changed. Since D strings are immutable(char)[], changing the 
elements is disallowed. So in total, you'll need to convert from 
a string (immutable(char)[]) to a dchar[]. std.conv.to to the 
rescue:

     import std.stdio : writeln;
     import std.conv : to;
     import std.algorithm.sorting : sort;

     string word = "longword";
     writeln(sort(word.to!(dchar[]))); // dglnoorw

--
   Biotronic


More information about the Digitalmars-d-learn mailing list