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