当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在asp.NET中字符串替换的五种方法

ASP.NET
asp.net 使用Silverlight操作ASPNETDB数据库
ASP.NET 前后台调用方法
ASP.NET中等安全模式的一些经验分享
asp.net 打印控件使用方法
网站开发技术:ASP.NET 2.0搭建网站
ASP.NET实例教程:创建数据透视表
ASP.NET 4进行SEO优化提高网站排名和权重
ASP.NET实例教程:订阅 GeoRSS 订阅源
ASP.NET页面间数据传递的9种方法
ASP.NET教程:网页表单多个按钮完成不同功能
Asp.net的服务器推技术 (Server Push)
asp.net 无刷新附件上传实现方法
ASP.NET 定制简单的错误处理页面实现代码
c# 在WebBrowser中用SendMessage模拟鼠标点击
asp.net 表单验证新思路
.NET从优酷专辑中采集所有视频及信息(VB.NET代码)
VS2005 水晶报表在时部署时遇到的问题
ASP.NET 输出图片简单代码
一天精通asp.net的学习经验小结
DataGridView中绑定DataTable数据及相关操作实现代码

ASP.NET 中的 在asp.NET中字符串替换的五种方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 225 ::
收藏到网摘: n/a

asp.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算法。有兴趣的参照研究下。
以下为引用的内容:
复制代码 代码如下:
测试
以下为引用的内容:
复制代码 代码如下:

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:(
  /*//substring
  time=newHiPerfTimer();
  time.Start();
  for(inti=0;i<count;i++)
  {
    result=StringHelper.ReplaceText(source,pattern,
         destination,StringHelper.CompareMethods.Text);
  }
  time.Stop();
  Console.WriteLine("substring="+time.Duration+":");
  GC.Collect();
  //substringwithstringbuilder
  time=newHiPerfTimer();
  time.Start();
  for(inti=0;i<count;i++)
  {
    result=StringHelper.ReplaceTextB(source,pattern,
          destination,StringHelper.CompareMethods.Text);
  }
  time.Stop();
  Console.WriteLine("substringB="+time.Duration+":");
  GC.Collect();
  */
  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

查看程序的Block在:
以下为引用的内容:
复制代码 代码如下:

stringupperString=original.ToUpper();
stringupperPattern=pattern.ToUpper();

如果需要敏感,就免了这2行。
解释:先建一个char[]类型的变量采访替换后的字符,其大小就是最大可能被替换的字符,例如ABABAB,替换AB成C,其获取过程就是ABABAB最大可能包括的AB的数目乘以AB多于C的数目,
以下为引用的内容:
  char[]chars=newchar[original.Length+Math.Max(0,inc)];
  ,inc不一定大于零。
然后循环,用IndexOf索引。赋值。。。判断,返回。