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