2010-10-06 15 views
6

Tengo una cadena, myString, que tiene aproximadamente 10000 de longitud.reemplazar una cadena dentro de un rango en C#

Si hago myString.Replace("A","B"); Se sustituirá todos los casos de A a B.

¿Cómo puedo hacer que no a toda la cadena de caracteres, pero sólo 5.000 a 5500?

Respuesta

18
StringBuilder myStringBuilder = new StringBuilder(myString); 
myStringBuilder.Replace("A", "B", 5000, 500); 
myString = myStringBuilder.ToString(); 

Se requerirá menos asignaciones de memoria a continuación, los métodos que utilizan String.substring().

+0

+1: Genial, nunca supe sobre esa sobrecarga. – Ani

+0

+1 Uno de esos métodos que siempre he pasado por alto. – bitbonk

1
var sub1 = myString.SubString(0,4999); 
var sub2 = myString.SubString(5000,500); 
var sub3 = myString.SubString(5501,myString.Length-5501); 
var result = sub1 + sub2.Replace("A","B") + sub3; 
+2

considerar el uso de StringBuilder, (que performes mejor con las asignaciones de cuerda) sobre todo porque las cadenas son largas. .. –

0

Divida la cadena usando SubString y combine los resultados cuando la operación se complete.

O, itere a través de la cadena completa como un carácter [] y (según el índice) realice la sustitución de forma selectiva. Esto no creará tantas nuevas instancias de cadena, pero es más frágil.

0

dividir la cadena para hacer 3 subseries, la de en medio son:

myString.Substring (5000, 500) .Colocar ("A", "B");

luego péguelas nuevamente.

0

dividir la cadena de caracteres 5.000 y 5.500

y luego aplicar reemplazar método

continuación concat entre si

Cuestiones relacionadas