RegEx.IsMatch()。Contains()性能既然没有不区分大小写的string.Contains()(但是有一个不区分大小写的string.Equals()版本让我很困惑,但我跑题了),使用RegEx.IsMatch()有什么性能区别与使用RegEx.IsMatch()相比?使用String.ToUpper().Contains()?示例:字符串testString="tHiSISaSTRINGwiThInconSISteNTcaPITaLIZATion";boolcontainsString=RegEx.IsMatch(testString,"string",RegexOptions.IgnoreCase);boolcontainsStringRegEx=testString.ToUpper().Contains("STRING");我一直听说string.ToUpper()是一个非常昂贵的调用,所以当我想做string.Contains()比较时我会避免使用它,但是RegEx.IsMatch()在性能方面如何比较?有没有更有效的方法来进行此类比较?这是使用系统的基准测试;使用系统诊断;使用System.Text.RegularExpressions;publicclassProgram{publicstaticvoidMain(string[]args){秒表sw=newStopwatch();stringtestString="tHiSISASTRINGwiThInconSISteNTcAPITaLIZATion";sw.Start();varre=newRegex("string",RegexOptions.Compiled|RegexOptions.CultureInvariant|RegexOptions.IgnoreCase);对于(inti=0;i=0;}sw.Stop();Console.WriteLine("IndexOf:"+sw.ElapsedMillis秒);}}结果是IndexOf(183ms)>Contains(400ms)>RegularExpression(477ms)(使用已编译的Regex更新输出时间)使用String.IndexOf(String,StringComparison)另一个版本可能比你建议的更好versions更有效:stringtestString="tHiSISaSTRINGwiThInconSISteNTcaPITaLIZATion";boolcontained=testString.IndexOf("string",StringComparison.OrdinalIgnoreCase)>=0;如果您需要区分文化的比较,请使用CurrentCultureIgnoreCase而不是OrdinalIgnoreCase根据个人对普通表达式解析器的经验,我预计RegEx.match会很慢。但正如许多人提到的那样,分析它是确定的最佳方法。我不得不解决与正则表达式解析器相关的性能问题,而toLower和toUpper再也没有回来咬我。以上就是C#学习教程:RegEx.IsMatch()和String.ToUpper()。包含()表演分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
