I want to do this:
string s = \"abc\";
s[1] = \'x\';
and s will become \"axc\". However, it seems that string[i] only has a getter and has
Why not do this if you're using some Linq
private string ConvertStr(string inStr , int inIndex , char inChar)
{
char[] tmp = inStr.ToCharArray();
tmp.SetValue(inChar , inIndex);
return new string(tmp);
}
That should let you replace whatever char you want with whatever char you want.
Remember, in managed and safe .Net, strings are immutable, so even if you could do the above, you'd really be creating a new copy of the string with the replacement.
If you are only replacing one character, a simple loop is probably your best bet.
However, if you are going to make multiple replacements, consider using a StringBuilder
:
string s = "abc";
var stringBuilder = new StringBuilder(s);
stringBuilder[1] = 'x';
s = stringBuilder.ToString();
What's about this?
string originalString = "abc";
var index = 1;
char charToReplace = 'x';
var newString = string.Format("{0}{1}{2}", originalString.Substring(0, index), charToReplace, originalString.Substring(index + 1));
yes in c# string can not be altered.
but we can try this
string s = "abc";
s = s.Replace('b', 'x');
Console.WriteLine(s);
answer will be "axc". as this will replace the old string with new string.
Strings are immutable which is why there's no setter, you can however use a string builder:
StringBuilder s = new StringBuilder("abc");
s[1] = 'x';
(Your example is slightly wrong: s[2] = 'x' should change it to "abx".)
No you can't, since strings are immutable, you have to create a new string:
http://en.wikipedia.org/wiki/Immutable_object
You should use a method that returns a new string with the desired modification.
Hope that helps!