July 13, 2014
On 07/10/2014 09:05 AM, Alexandre wrote:
> I have a string X and I need to insert a char in that string...
>
> auto X = "100000000000000";
>
> And I need to inser a ',' in position 3 of this string..., I try to use
> the array.insertInPlace, but, not work...
>
> I try this:
> auto X = "100000000000000";
> auto N = X.insertInPlace(1,'0');

Here is another solution, which does not modify the original string:

import std.stdio;
import std.algorithm;
import std.range;
import std.string;

void main()
{
    auto number = "12345678";

    auto formatted =
        zip(number.retro, sequence!"n + 1")
        .map!(z => format(!(z[1] % 3) ? "%s," : "%s", z[0]))
        .join
        .retro;

    assert(formatted.equal("12,345,678"));
}

I am not happy with the .join there because I think it makes an array but I could not get it to compile with the lazy .joiner because I think it dose not look like a bidirectional range to .retro.

Ali

1 2
Next ›   Last »