在C#中优化字符串操作
2010-09-30 22:34:50 来源:WEB开发网核心提示: 此函数基于IndexOf方法搜索一个字符非常快这个事实的,基本想法非常的简单,在C#中优化字符串操作(4),这个方法先搜索这个单词的第一个字符,如果一旦找到,但是,在这种情况下,它检测下一个的字符,该代码是有点乱
此函数基于IndexOf方法搜索一个字符非常快这个事实的。
基本想法非常的简单,这个方法先搜索这个单词的第一个字符。如果一旦找到,它检测下一个的字符,该代码是有点乱,因为它包含了很多小的优化。例如,我发现,如果该方法在启动检测这个词的其余部分的“for”循环之前检查第二个字符(第一个已近被找到),平均性能将会更好。
我已经对随机生成的字符串进行大量测试,比较上述所列三种方案和这里是结果:
a、对一个单词的搜索,IndexOf函数速度总是比我的自定义FastIndexOf方法慢20%左右。
b、如果输入字符和匹配字符串都足够的长,正则表达式是最快的方式找到一个字符串,
下图是根据我的测量的值。它显示了两种最快的办法取决于输入字符串的长度:
纵轴表示这个词的长度(以字符数),横轴显示的是(以字符)输入字符串的长度。条纹地区是自定义搜索方法优于正则表达式。
请注意,所有测量值是近似的。
N0.2:替换转义字符
另一种常见的字符串的操作是要替换转义字符。有时替换是很容易的,你只需要设立一个反斜杠(或其他字符)在每一个转义字符的前面。
试想以下情况:你是建立一个RTF文件,你要在文件中的插入字符串。在RTF文件中"(",")"和"\"字符具有特殊的意义,因此,必须先用反斜杠。现在的问题是:什么是最快的方法,以取代相应的转义序列的每个字符?
正则表达式
1、用Regex类的Replace 法是其中一个可行办法。但是,在这种情况下,使用正则表达式是目前最慢的选择。
更多精彩
赞助商链接