someString[someRandomIdx] = 'g';
что даст мне ошибку,
как достичь вышеуказанного?
Edit:
да, это тип 'string'
someString[someRandomIdx] = 'g';
что даст мне ошибку,
как достичь вышеуказанного?
Edit:
да, это тип 'string'
Если это тип string
, вы не можете этого сделать, потому что строки неизменяемы - их нельзя изменить после их установки.
Чтобы достичь желаемого, вы можете использовать StringBuilder
StringBuilder someString = new StringBuilder("someString");
someString[4] = 'g';
Обновление
Зачем использовать string
вместо StringBuilder
? По многим причинам. Вот некоторые из них, о которых я могу думать:
Строки С# неизменяемы. Вы должны создать новую строку с измененным содержимым.
char[] charArr = someString.ToCharArray();
charArr[someRandomIdx] = 'g'; // freely modify the array
someString = new string(charArr); // create a new string with array contents.
Поскольку никто не упомянул однострочное решение:
someString = someString.Remove(index, 1).Insert(index, "g");
Если вам абсолютно необходимо изменить существующий экземпляр строки, существует способ с небезопасным кодом:
public static unsafe void ChangeCharInString(ref string str, char c, int index)
{
GCHandle handle;
try
{
handle = GCHandle.Alloc(str, GCHandleType.Pinned);
char* ptr = (char*)handle.AddrOfPinnedObject();
ptr[index] = c;
}
finally
{
try
{
handle.Free();
}
catch(InvalidOperationException)
{
}
}
}
Отметьте эту статью о том, как изменить содержимое строки на С#. Строки неизменяемы, поэтому их необходимо преобразовать в промежуточные объекты, прежде чем они могут быть изменены.
Вы также можете использовать метод Insert()
например, somestring.Insert(index,data)