在C#中优化字符串操作
2010-09-30 22:34:50 来源:WEB开发网IsMatch方法根据pattern变量中创建一个Regex对象,然后试着匹配input字符串,这个过程表现地非常缓慢,正则表达式不重复使用,这个才非常有用。
规则#3:尽可能地重复使用Regex对象
如上所述,一个正则表达式对象的创建需要一段时间,你应该避免频繁创建。在某些情况下,您可以在应用程序的启动的时候初始化一切必要的正则表达式,然后多次利用他们来处理长段的文本。这将会提高性能。
规则#4:考虑使用编译的正则表达式
当创建一个正则表达式对象,如果你使用编译的选项,性能会更好。
Regex pattern = new Regex("SomePattern", RegexOptions.Compiled);
虽然有几个缺点,编译正则表达式增加了应用程序的启动时间,造成更多的内存使用,Jeff Atwood 写了一篇文章,讨论了编译的正则表达式优势和缺点:
http://www.codinghorror.com/blog/archives/000228.html
2、使用indexOf()方法
在一个字符串内进行搜索的时候,字符串类型IndexOf方法是非常有用的。你应该知道一些东西,来有效使用此方法。
a、尽量使用char类型
有两个IndexOf方法重载方法,第一个参数可以是一个字符或一个字符串,使用字符重载方法将快很多。如果您知道您正在搜索字符串的长度为1,请使用char类型代替。
b、一个不成功搜索所花的时间将超过一个成功的搜索:
这其实并不奇怪,如果IndexOf方法成功,它将返回给定的字符串或字符首次出现的位置,它省去了剩余字符串的搜索时间。 相反,如果输入的字符串不包含给定的字符或者字符串,IndexOf函数将对整个输入字符串进行搜索。
c、经常有一种方法来消除不成功的搜索,例如,如果你想知道输入的字符串是否包含了一组单词的,你可以先搜索那些更可能出现在输入字符串的字符。
更多精彩
赞助商链接