Modificar caracter de la posicion i

04/01/2009 - 17:53 por Carlos | Informe spam
tengo un string s.

necesito modificarle el caracter de la posicion I.

s[I]='0';

me dice que no es permitido.

Como modifico un caracter de una posicion especifica de un string ?

Preguntas similare

Leer las respuestas

#1 RFOG
04/01/2009 - 18:01 | Informe spam
No puedes porque las cadenas en .NET son inmutables. Para hacerlo tienes
que crear una nueva cadena y copiarla por partes (lo que es muy
ineficiente) o usar un StringBuilder y cuando lo tengas todo hecho,
pasarlo a una cadena.


On Sun, 04 Jan 2009 17:53:27 +0100, Carlos <carl> wrote:

tengo un string s.

necesito modificarle el caracter de la posicion I.

s[I]='0';

me dice que no es permitido.

Como modifico un caracter de una posicion especifica de un string ?







Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
Podran cortar una flor, dos, mil, pero no podran impedir que llegue la
primavera...
Respuesta Responder a este mensaje
#2 SoftJaén
04/01/2009 - 18:48 | Informe spam
"Carlos" preguntó:

tengo un string s.

necesito modificarle el caracter de la posicion I.

s[I]='0';

me dice que no es permitido.

Como modifico un caracter de una posicion especifica de un string ?



Hola, Carlos:

Como te ha comentado el compañero Rafael, las cadenas alfanuméricas son
inmutables, por lo que tendrás que crear una nueva cadena que tome ya la
modificación del carácter especificado. Si conoces el índice del carácter
que deseas modificar, bien te puede servir el método «Replace»:

string s = "­¡Hola, mundo!";

// Vamos a reemplazar la 'm' por la 'M'
int I = 7;

// Aunque parezca mentira, vamos a crear una nueva cadena
//
s = s.Replace(s[I] , 'M');

MessageBox.Show(s);

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#3 SoftJaén
04/01/2009 - 19:53 | Informe spam
Te advierto que el método «Replace» reemplazará todas las coincidencias
existentes en la cadena. Es decir, si existe más de una 'm' minúscula, las
reemplazará por una 'M' mayúscula.

Otra cosa que puedes hacer, es eliminar primero el carácter en el índice
deseado, y posteriormente insertar el nuevo carácter, por lo que tendrás que
crear dos cadenas:

string s = "­Hola, mumdo!";

// Vamos a reemplazar sólo la primera 'm' por la 'M'
//
int I = 7;

// Aunque parezca mentira, vamos a crear una nueva cadena
//
s = s.Remove(I, 1);

// Creamos otra nueva cadena para insertar el carácter
// en el índice especificado.
//
s = s.Insert(I, "M");

MessageBox.Show(s);

Cada vez que le asignes un nuevo valor a la variable 's' estarás creando una
nueva cadena alfanumérica, aunque la variable la hayas declarado una sola
vez, porque como te hemos comentado, las cadenas son inmutables.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#4 Alfredo Novoa
05/01/2009 - 12:57 | Informe spam
El Sun, 04 Jan 2009 18:01:00 +0100, RFOG escribió:

No puedes porque las cadenas en .NET son inmutables. Para hacerlo tienes
que crear una nueva cadena y copiarla por partes (lo que es muy
ineficiente) o usar un StringBuilder y cuando lo tengas todo hecho,
pasarlo a una cadena.



StringBuilder solo es más eficiente cuando hay muchas partes. En este caso
solo hay 3 y por lo tanto no vale la pena usarlo.


Saludos
Respuesta Responder a este mensaje
#5 Gilbert
05/01/2009 - 13:17 | Informe spam
creo que asi lo podrias hacer:

s=s.Substring(0,I-1)+'0'+s.Substring(I+1);

pero quizas otra forma es usar ToCharArray() para llevarlo a un arreglo de
Char, cambiar el caracter y luego usar ToString() para convertirlo a string
de nuevo.


"Carlos" <carl> escribió en el mensaje
news:%
tengo un string s.

necesito modificarle el caracter de la posicion I.

s[I]='0';

me dice que no es permitido.

Como modifico un caracter de una posicion especifica de un string ?

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida