如何在c#中的字符串中的索引处设置字符?

mat*_*att 23 c#

someString[someRandomIdx] = 'g';
Run Code Online (Sandbox Code Playgroud)

这会给我一个错误,

我该如何实现上述目标?

编辑:

是的它是'string'类型

Mat*_*len 40

如果它是类型,string那么你就不能这样做,因为字符串是不可变的 - 一旦设置它们就不能改变它们.

为了实现您的愿望,您可以使用 StringBuilder

StringBuilder someString = new StringBuilder("someString");

someString[4] = 'g';
Run Code Online (Sandbox Code Playgroud)

更新

为什么要使用a string而不是StringBuilder?原因很多.以下是我能想到的一些内容:

  • 访问字符串的值更快.
  • 字符串可以被实现(这并不总是发生),因此如果您创建一个具有相同值的字符串,则不会使用额外的内存.
  • 字符串是不可变的,因此它们在基于散列的集合中工作得更好,并且它们本质上是线程安全的.


Meh*_*ari 30

C#字符串是不可变的.您应该使用修改后的内容创建一个新字符串.

 char[] charArr = someString.ToCharArray();
 charArr[someRandomIdx] = 'g'; // freely modify the array
 someString = new string(charArr); // create a new string with array contents.
Run Code Online (Sandbox Code Playgroud)


pol*_*ఠ_ఠ 5

由于没有人提到一线解决方案:

someString = someString.Remove(index, 1).Insert(index, "g");
Run Code Online (Sandbox Code Playgroud)

  • __你__可能知道这一点,但其他人可能不知道。根据字符串的大小,这可能会导致严重的惩罚,而你完全没有提到这一点。您的方法客观上比公认的答案更糟糕。不,一两行代码之间的可读性并没有那么大,您可以将其作为参数提出。 (2认同)