2010-10-06 40 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的海誓山盟