Modify char in string

Chris Cain via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun May 18 12:09:50 PDT 2014


On Sunday, 18 May 2014 at 18:55:59 UTC, Tim wrote:
> Hi everyone,
>
> is there any chance to modify a char in a string like:

As you've seen, you cannot modify immutables (string is an 
immutable(char)[]). If you actually do want the string to be 
modifiable, you should define it as char[] instead.

Then your example will work:

     void main()
     {
        char[] sMyText = "Replace the last char_";
        sMyText[$ - 1] = '.';
     }

If you actually want it to be immutable, you can still do it, but 
you can't modify in-place, you must create a new string that 
looks like what you want:

     void main()
     {
        string sMyText = "Replace the last char_";
        sMyText = sMyText[0 .. $-1] ~ ".";
        // you would do
        //sMyText[0 .. 5] ~ "." ~ sMyText[6..$];
        // to "replace" something in the 5th position
     }

Note that the second method allocates and uses the GC more (which 
is perfectly fine, but not something you want to do in a tight 
loop). For most circumstances, the second method is good.


More information about the Digitalmars-d-learn mailing list