欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【在.NET中字符串替换的五种方法】,下面是详细的分享!
在.NET中字符串替换的五种方法
1:使用String.Replace函数替换,但不支持大小写。
2:正则System.Text.Regex替换,用RegExpOption修改是否支持大小写。
3:在小数据的情况下,使用String.SubString和+可以实现间接替换。
4:导入MicrosoftVisualBasicRunTime(Microsoft.VisualBasic.DLL)使用Strings.Replace速度很快。
5:参照反射Reflector.FileDisassembler配合Strings.SplitandStrings.Join等实现,速度同5。
一下介绍一种算法,类似KMP算法。有兴趣的参照研究下。
| 以下为引用的内容: privatestaticstringReplaceEx(stringoriginal, stringpattern,stringreplacement) { intcount,position0,position1; count=position0=position1=0; stringupperString=original.ToUpper(); stringupperPattern=pattern.ToUpper(); intinc=(original.Length/pattern.Length)* (replacement.Length-pattern.Length); char[]chars=newchar[original.Length+Math.Max(0,inc)]; while((position1=upperString.IndexOf(upperPattern, position0))!=-1) { for(inti=position0;i<position1;++i) chars[count++]=original[i]; for(inti=0;i<replacement.Length;++i) chars[count++]=replacement[i]; position0=position1+pattern.Length; } if(position0==0)returnoriginal; for(inti=position0;i<original.Length;++i) chars[count++]=original[i]; returnnewstring(chars,0,count); } |
staticvoidMain(string[]args)
{
stringsegment="AaBbCc";
stringsource;
stringpattern="AbC";
stringdestination="Some";
stringresult="";
constlongcount=1000;
StringBuilderpressure=newStringBuilder();
HiPerfTimertime;
for(inti=0;i<count;i++)
{
pressure.Append(segment);
}
source=pressure.ToString();
GC.Collect();
//regexp
time=newHiPerfTimer();
time.Start();
for(inti=0;i<count;i++)
{
result=Regex.Replace(source,pattern,
destination,RegexOptions.IgnoreCase);
}
time.Stop();
Console.WriteLine("regexp="+time.Duration+"s");
GC.Collect();
//vb
time=newHiPerfTimer();
time.Start();
for(inti=0;i<count;i++)
{
result=Strings.Replace(source,pattern,
destination,1,-1,CompareMethod.Text);
}
time.Stop();
Console.WriteLine("vb="+time.Duration+"s");
GC.Collect();
//vbReplace
time=newHiPerfTimer();
time.Start();
for(inti=0;i<count;i++)
{
result=VBString.Replace(source,pattern,
destination,1,-1,StringCompareMethod.Text);
}
time.Stop();
Console.WriteLine("vbReplace="+time.Duration+"s");//+result);
GC.Collect();
//ReplaceEx
time=newHiPerfTimer();
time.Start();
for(inti=0;i<count;i++)
{
result=Test.ReplaceEx(source,pattern,destination);
}
time.Stop();
Console.WriteLine("ReplaceEx="+time.Duration+"s");
GC.Collect();
//Replace
time=newHiPerfTimer();
time.Start();
for(inti=0;i<count;i++)
{
result=source.Replace(pattern.ToLower(),destination);
}
time.Stop();
Console.WriteLine("Replace="+time.Duration+"s");
GC.Collect();
//sorry,twoslow:(
Console.ReadLine();
}
1?¢stringsegment="abcaBc";
regexp=3.75481827997692s
vb=1.52745502570857s
vbReplace=1.46234256029747s
ReplaceEx=0.797071415501132s!!!<FONTcolor=gray>Replace=0.178327413120941s</FONT>
//ReplaceEx>vbReplace>vb>regexp
2?¢stringsegment="abcaBcabC";
regexp=5.30117431126023s
vb=2.46258449048692s
vbReplace=2.5018721653171s
ReplaceEx=1.00662179131705s!!!
<FONTcolor=gray>Replace=0.233760994763301s</FONT>
//ReplaceEx>vb>vbReplace>regexp
3?¢stringsegment="abcaBcabCAbc";
regexp=7.00987862982586s
vb=3.61050301085753s
vbReplace=3.42324876485699s
ReplaceEx=1.14969947297771s!!!
<FONTcolor=gray>Replace=0.277254511397398s</FONT>
//ReplaceEx>vbReplace>vb>regexp
4?¢stringsegment="ABCabcAbCaBcAbcabCABCAbcaBC";
regexp=13.5940090151123s
vb=11.6806222578568s
vbReplace=11.1757614445411s
ReplaceEx=1.70264153684337s!!!(mygod!)
<FONTcolor=gray>Replace=0.42236820601501s</FONT>
//ReplaceEx>vbReplace>vb>regexp
以上所分享的是关于在.NET中字符串替换的五种方法,下面是编辑为你推荐的有价值的用户互动:
相关问题:c#.net如何将字符串替换成指定的串
答:string str = "ABCDABCD"; str = str.Replace("B","Z"); >>详细
相关问题:.net中替换某两个字符串之间内容
答:那还不容易,string里有个IndexOf方法,查出efg在a中的索引,然后用IndexOf返回的索引代进Substring方法取出efg前面的字符串,然后用Replace("取出来的字符串","");替换成空的就可以了 >>详细
相关问题:lua语言的字符串替换函数的使用方法问题。
答:str = "14:9f:e8:5c:06:0d"; str2=string.gsub(str, ":", ""); print(str2); >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
