我有像下面如何改變字符串的第n個元素
string s = new string('~',25);
int ind = 5;
s[ind] = 'A';
它給出了一個錯誤
屬性或索引「string.this [INT]」不能被分配在C#代碼它 - 它被讀取
那麼是什麼問題,我該如何解決它。
我有像下面如何改變字符串的第n個元素
string s = new string('~',25);
int ind = 5;
s[ind] = 'A';
它給出了一個錯誤
屬性或索引「string.this [INT]」不能被分配在C#代碼它 - 它被讀取
那麼是什麼問題,我該如何解決它。
字符串是不可變的 - 你不能改變現有的字符串。
兩個選項:
使用StringBuilder
,例如
StringBuilder builder = new StringBuilder(new string('~', 25));
builder[5] = 'A';
string result = builder.ToString();
構建從字符數組一個新的字符串:
char[] chars = new string('~', 25).ToCharArray();
chars[5] = 'A';
string result = new string(chars);
在這兩種情況下,你可以填充可變數據,而無需建立一個新的字符串開始,如果你想 - 這將涉及更多的代碼,但可能會更有效。
或者,你可以把子串和連接在一起,按照另一個答案......基本上有很多方法來解決這個問題。哪一個是合適的取決於你的實際使用情況。
C#字符串是不可變的,這意味着一旦構造就不能改變。嘗試使用一個字符數組來代替。
嘗試
s = s.Substring(0, ind) + "A" + s.Substring(ind + 1);
您可以使用StringBuilder,您可以在其中分配給索引:
StringBuilder sb = s;
int ind = 5;
sb[ind] = 'A';
s = sb.ToString();
字符串在C#中不變的,所以你需要使用StringBuilder – 2011-05-13 09:51:06