2010-10-06 66 views
6

我有一個字符串myString,它的長度大約爲10000。替換C中某個範圍內的字符串#

如果我做myString.Replace("A","B");它將取代A的所有實例B.

我如何能做到這一點不是整個字符串,但只對字符5000-5500?

回答

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

這將需要較少的內存分配,然後使用String.Substring()方法。

+0

+1:太好了,從來不知道那個過載。 – Ani 2010-10-06 09:18:58

+0

+1其中一種我一直忽略的方法。 – bitbonk 2010-10-06 09:20:41

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

考慮使用StringBuilder的,(與串分配performes更好)特別是因爲弦長。 – 2010-10-06 09:13:05

0

使用SubString分割字符串,並在操作完成時合併結果。

或者,遍歷整個字符串作爲char []和(基於索引)選擇性地執行替換。這不會創建儘可能多的新字符串實例,但它更脆弱。

0

分割字符串,使3級的子串,中間的一個存在:

myString.Substring(5000,500).Replace( 「A」, 「B」);

然後將它們粘合在一起。

0

從字符5000字符串分割到5500

,然後申請更換方法

那麼Concat的海誓山盟