我有一個字符串myString,它的長度大約爲10000。替換C中某個範圍內的字符串#
如果我做myString.Replace("A","B");
它將取代A的所有實例B.
我如何能做到這一點不是整個字符串,但只對字符5000-5500?
我有一個字符串myString,它的長度大約爲10000。替換C中某個範圍內的字符串#
如果我做myString.Replace("A","B");
它將取代A的所有實例B.
我如何能做到這一點不是整個字符串,但只對字符5000-5500?
StringBuilder myStringBuilder = new StringBuilder(myString);
myStringBuilder.Replace("A", "B", 5000, 500);
myString = myStringBuilder.ToString();
這將需要較少的內存分配,然後使用String.Substring()方法。
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;
考慮使用StringBuilder的,(與串分配performes更好)特別是因爲弦長。 – 2010-10-06 09:13:05
使用SubString分割字符串,並在操作完成時合併結果。
或者,遍歷整個字符串作爲char []和(基於索引)選擇性地執行替換。這不會創建儘可能多的新字符串實例,但它更脆弱。
分割字符串,使3級的子串,中間的一個存在:
myString.Substring(5000,500).Replace( 「A」, 「B」);
然後將它們粘合在一起。
從字符5000字符串分割到5500
,然後申請更換方法
那麼Concat的海誓山盟
+1:太好了,從來不知道那個過載。 – Ani 2010-10-06 09:18:58
+1其中一種我一直忽略的方法。 – bitbonk 2010-10-06 09:20:41