Modify char in string
bearophile via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun May 18 12:04:30 PDT 2014
Tim:
> is there any chance to modify a char in a string like:
>
> void main()
> {
> string sMyText = "Replace the last char_";
> sMyText[$ - 1] = '.';
> }
>
> But when I execute the code above I'm always getting "cannot
> modify immutable expression at sMyText[__dollar -1LU]". I
> though D supported such modifications anytime. How can I do
> that now...?
D strings are immutable. And mutating immutable variables is a
bug in D. So you can't do that. You have to work around the
problem. One solution is to not have a string, but something more
like a char[] in the first place, and mutate it.
If you have a string, you can do (this works with the current GIT
DMD compiler):
/// Not Unicode-safe.
string dotLast(in string s) pure nothrow {
auto ds = s.dup;
ds[$ - 1] = '.';
return ds;
}
void main() {
import std.stdio;
immutable input = "Replace the last char_";
immutable result = input.dotLast;
result.writeln;
}
That code doesn't work if your text contains more than the Ascii
chars.
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list