2010-10-06 13 views
6

Ho una stringa, myString, che è di circa 10000 di lunghezza.sostituire una stringa in un intervallo in C#

Se faccio myString.Replace("A","B"); Essa sostituirà tutte le istanze di A a B.

Come posso fare che non l'intera stringa, ma solo a carattere 5000-5500?

risposta

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

Richiede meno allocazioni di memoria quindi metodi che utilizzano String.Substring().

+0

+1: fantastico, mai saputo di quel sovraccarico. – Ani

+0

+1 Uno di quei metodi che ho sempre trascurato. – 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

considerano utilizzando StringBuilder, (che esibisce meglio con le allocazioni di stringhe) soprattutto perché le stringhe sono lunghi. .. –

0

Dividere la stringa utilizzando SubString e combinare i risultati al termine dell'operazione.

Oppure, scorrere l'intera stringa come un carattere [] e (in base all'indice) eseguire selettivamente la sostituzione. Questo non creerà tante nuove istanze di stringa, ma è più fragile.

0

dividere la stringa per fare 3 sottostringhe, al centro un essere:

MyString.Substring (5000, 500) .Rimontare ("A", "B");

quindi incollarli di nuovo insieme.

0

dividere la stringa da caratteri 5000-5500

e quindi applicare sostituire metodo

poi concat vicenda

Problemi correlati