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

#6 Gilbert
05/01/2009 - 13:20 | Informe spam
Correccion, que siempre se me confunden los indices zero-based :(

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




"Gilbert" escribió en el mensaje
news:uMCkV%
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
#7 RFOG
05/01/2009 - 13:27 | Informe spam
On Mon, 05 Jan 2009 12:57:35 +0100, Alfredo Novoa
wrote:

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



No lo sé, no he hecho medidas de tiempos ni nada de eso, pero teniendo en
cuenta que en las tripas del StringBuilder tiene que haber alguna
estructura de datos estilo lista enlazada o similar debes estar en lo
cierto.

Y al final, siempre se producirá una copia de todos los fragmentos de
cadena sobre la final... así que poco aumento de rendimiento debe haber en
casos pequeños como éste...

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
#8 Alberto Poblacion
05/01/2009 - 13:45 | Informe spam
"RFOG" wrote in message news:
No lo sé, no he hecho medidas de tiempos ni nada de eso [...]



Hay gente que sí que las ha hecho, y la conclusión final del artículo
que yo leí (lo siento, no me acuerdo de dónde lo enontré) es que merece la
pena usar el StringBuilder cuando hay que hacer más de 7 concatenaciones
sobre un String. Para menos de 7, es preferible crear 7 veces un nuevo
string.
Respuesta Responder a este mensaje
#9 SoftJaén
05/01/2009 - 15:24 | Informe spam
Hola, Alberto:

Esta situación, en el mundo de Visual Basic clásico, o de Visual Basic para
Aplicaciones, se resolvía fácilmente haciendo uso de la instrucción «Mid$»,
sin necesidad de crear una nueva cadena, es decir, más o menos como funciona
la clase StringBuilder:

Dim s As String

s = "¡Hola, mundo!"

Dim I As Integer

I = 8

' Reemplamos la 'm' por la 'M'
'
Mid$(s, I, 1) = "M"

MsgBox s

Pero en Visual Basic .NET ya se ha perdido la instrucción «Mid$», y la misma
sólo queda como función, dentro del espacio de nombres
Microsoft.VisualBasic.

Una pregunta: en C# por casualidad no existirá alguna instrucción propia del
lenguaje, parecida a la instrucción «Mid$» de Visual Basic clásico.

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
#10 RFOG
05/01/2009 - 16:05 | Informe spam
On Mon, 05 Jan 2009 13:45:18 +0100, Alberto Poblacion
wrote:

"RFOG" wrote in message news:
No lo sé, no he hecho medidas de tiempos ni nada de eso [...]



Hay gente que sí que las ha hecho, y la conclusión final del
artículo que yo leí (lo siento, no me acuerdo de dónde lo enontré) es
que merece la pena usar el StringBuilder cuando hay que hacer más de 7
concatenaciones sobre un String. Para menos de 7, es preferible crear 7
veces un nuevo string.




Vaya, bien está en saberlo, je je.

Gracias.


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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida