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

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 229 ::
收藏到网摘: 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索引。赋值。。。判断,返回。