Sort characters in string

Dgame r.schuett.1987 at gmail.com
Wed Dec 6 10:42:31 UTC 2017


On Wednesday, 6 December 2017 at 09:25:20 UTC, Biotronic wrote:
> 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

Or you simply do
----
writeln("longword".array.sort);
----


More information about the Digitalmars-d-learn mailing list