我有一个字符串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