ASP.NET从字符串中查找字符出现次数的方法今天在一场“特殊的讨论”中引入了一个问题,如何在C#求出字符串中某字符的出现次数,比如求“ADSFGEHERGASDF”中“A”出现的次数。首先想到的方法当然是从头遍历字符串并统计: 程序代码 c1=0; 第二种方法也很容易想到,将字符串中所有要查找的字符去除,然后比较去除前后的字符串长度即可。这种方法遭到了某人的鄙视,据说性能很差而且多占空间。 程序代码
程序代码
stringstr="SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA"; Stopwatchsw=newStopwatch(); longt; sw.Start(); for(inti=0;i<100000;i++) sw.Stop(); t=sw.ElapsedMilliseconds;
遍历统计:13毫秒 这里已经体现出差异,遍历统计比替换后比较要快10倍,断开字符串又要慢一些。接下来我又做了如下两个测试: 1、不改变字符串的长度,增加或减少要查找字符串的个数。 结果发现,三种方法都随字符串长度增加线性变慢,而后两种方法还随要查找的字符增加而变慢。 断开字符串的方法还受要查找字符串分布情况的影响。 研究Replace函数和Split函数的实现可以彻底解决这个问题。不过我没有心情细细研究了,我还是决定选用第二种方法——替换后比较长度。虽然其速度比第一种方法慢,但易于改写为求长度不为1的子串出现次数的方法。第一种方法若改为求长度大于1的字串就要考虑很多因素(尽管不一定真的很麻烦),我懒得想了,呵呵。 (责任编辑:admin) |