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.