someString[someRandomIdx] = 'g';
que me dará un error,¿cómo configuro un carácter en un índice en una cadena en C#?
¿cómo puedo lograr lo anterior?
Editar:
sí es del tipo 'cadena'
someString[someRandomIdx] = 'g';
que me dará un error,¿cómo configuro un carácter en un índice en una cadena en C#?
¿cómo puedo lograr lo anterior?
Editar:
sí es del tipo 'cadena'
Si es de tipo string
entonces no se puede hacer eso porque las cadenas son inmutables - que no se pueden cambiar una vez que se establecen .
Para lograr lo que se desea, se puede utilizar una actualización StringBuilder
StringBuilder someString = new StringBuilder("someString");
someString[4] = 'g';
Por qué utilizar un string
, en lugar de un StringBuilder
? Por muchas razones Aquí hay algunos que puedo pensar:
la diferencia entre una cadena y un StringBuilder? es decir, ¿por qué no debería usar StringBuilders en todas partes? – matt
para obtener más información sobre la clase StringBuilder: http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx –
C# strings son inmutables. Debe crear una nueva cadena con los contenidos modificados.
char[] charArr = someString.ToCharArray();
charArr[someRandomIdx] = 'g'; // freely modify the array
someString = new string(charArr); // create a new string with array contents.
Consulte this article sobre cómo modificar el contenido de la cuerda en C#. Las cadenas son inmutables, por lo que se deben convertir en objetos intermedios antes de poder modificarlas.
también puede utilizar el método Insert(), p. somestring.Insert (índice, los datos)
Si es absolutamente necesario cambiar la instancia existente de una cadena, hay una manera insegura con código:
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)
{
}
}
}
Es bueno saber esto, gracias, pero por favor no lo haga de esta manera :) – Roberto
http://msdn.microsoft.com/ es-us/library/system.string.insert.aspx –
Immutabillity es una herramienta poderosa. – Dykam
posible duplicado de [¿Reemplazar un char en un índice dado en una cadena?] (Http://stackoverflow.com/questions/9367119/replacing-a-char-at-a-given-index-in-string) – psubsee2003