`
pcajax
  • 浏览: 2106687 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ASP.NET从字符串中查找字符出现次数的方法

阅读更多

今天在一场“特殊的讨论”中引入了一个问题,如何在C#求出字符串中某字符的出现次数,比如求“ADSFGEHERGASDF”中“A”出现的次数。首先想到的方法当然是从头遍历字符串并统计:
程序代码
c1=0;
for(inti=0;i {
if(str[i]==.A.)
{
c1++;
}
}
第二种方法也很容易想到,将字符串中所有要查找的字符去除,然后比较去除前后的字符串长度即可。这种方法遭到了某人的鄙视,据说性能很差而且多占空间。
程序代码
c2=str.Length-str.Replace("A",String.Empty).Length;
接下来某人又提出了第三种方法,是用要查找的字符为分隔符,将原字符串分隔为多个子串,然后求子串的数目即可。在C#中这是一个写起来很短的方法:
程序代码
c3=str.Split(newchar[]{.A.}).Length-1;
我们从原理可以推断出三者性能的顺序,但究竟差距是多少呢,还是要动手试验一下。这是非常经典的测试代码:
程序代码
stringstr="SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA";
Stopwatchsw=newStopwatch();
longt;
intc=0;
GC.Collect();
Application.DoEvents();
sw.Start();
for(inti=0;i<100000;i++)
{
c=三种算法
}
sw.Stop();
t=sw.ElapsedMilliseconds;
首先我们确保正确性,经测试三种方法都能正确处理多种情况,包括首尾、连续出现、不出现或串长度为0等,我所取的字符串是一个很普通的串。编译为Release版,预运行10次后获得以下结果:
遍历统计:13毫秒
替换后比较长度:112毫秒
断开字符串后计数:233毫秒
这里已经体现出差异,遍历统计比替换后比较要快10倍,断开字符串又要慢一些。接下来我又做了如下两个测试:
1、不改变字符串的长度,增加或减少要查找字符串的个数。
2、不改变要查找字符出现的频率,但增长字符串的长度。
结果发现,三种方法都随字符串长度增加线性变慢,而后两种方法还随要查找的字符增加而变慢。

转自:娃酷分类网 http://www.waaku.com 原文地址:http://www.waaku.com/InfoView124056.html

分享到:
评论

相关推荐

    ASP.NET从字符串中查找字符出现次数的具体实现方法

    第二种方法也很容易想到,将字符串中所有要查找的字符去除,然后比较去除前后的字符串长度即可。这种方法遭到了某人的鄙视,据说性能很差而且多占空间。 代码如下:c2=str.Length-str.Replace(“A”,String.Empty)....

    在.NET上如何根据字符串动态创建控件

    在.Net上用字符串动态创建控件是通过反射来实现,本文就是讲述在.NET上如何根据字符串动态创建控件。

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    查找字符串出现的次数.php 查找字符串出现的次数 替换子字符串.php 替换子字符串 按照特定字符进行分割.php 按照特定字符进行分割 ...

    ASP.NET+MySQL人事管理系统

    因为老师不允许用GridView等数据控件,所以都是用代码(好像是叫ADO.NET来着)操作数据库的,表格下拉框什么的花了很大的功夫,我想想,用了代码块,拼接HTML字符串,JS插数据等方法。 听课是不可能听课的,整个实验...

    asp.net richTextBox中高亮显示选中字符串或文本

    实例验证如下: 代码如下: private void 突出显示(string 要查找字符串) { //首先找到要查找字符串的起始位置 int 开始位置=richTextBox短语显示.Find(要查找字符串); //判断一下是否找到,如果找不到那么开始位置是-1...

    asp.net实现的学生信息管理系统

    学生信息管理系统 一、源码描述 本程序为学生信息管理系统。是一个简易的ASP.NET系统,主要实现登录功能和两个模块信息的增删改查。... 4、默认数据库连接字符串在Web.config中修改。 作者:SWU

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    ASP.NET Night Words

    21.1.2 字符串连接优化 410 21.1.3 类型转换优化 413 21.1.4 使用server.transfer()方法 414 21.1.5 避免不必要的服务器往返 414 21.1.6 尽早释放对象 415 21.1.7 尽量减少服务器控件的使用 415 21.2 数据操作...

    字符串查找工具,可以查找多种文档文件

    字符串查找工具,可以查找多种文档文件,例如TXT,ASP

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    内容简介回到顶部↑本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    FX通讯录 Dapper 三层 -- asp.net源码

    FX通讯录(Dapper+三层)源码 源码描述: 一、源码特点 本Demo是一个三层通讯录源码,,有需要的朋友不要... 2、默认数据库连接字符串在webconfig配置文件中修改 3、DB文件夹中是数据库文件,附加即可 作者: FaLiang

    .net性能优化宝典

    3.ASP.NET. 21 3.1 减少往返行程(Reduce Round Trips)... 21 3.2 避免阻塞和长时间的作业... 22 3.3 使用缓存... 22 3.4 多线程... 22 3.5 系统资源... 23 3.6 页面处理... 23 3.7 ViewState. 23 4....

    asp.net Http异常eurl.axd出错信息解决方法

    但是,如果一个低于ASP.NET 4.0 的网站配置为使用ASP.NET 2.0,处理这样不能扩展的 URL 时,URL的修改结果中会包含字符串“eurl.axd”,修改后的URL会被发送到 ASP.NET 2.0应用程序。 ASP.NET 2.0中是不能识别“eurl...

    FileSearcher:这是一个.Net应用程序(WinForms或ASP.NET MVC),用于通过搜索字符串进行文件搜索。 该应用程序查找文件内部以查找搜索字符串。 文件可以是任何格式(文本,二进制等)

    FileSearcher 这是一个.Net应用程序(WinForms或ASP.NET MVC),用于通过搜索字符串进行文件搜索。 该应用程序查找文件内部以查找搜索字符串。 文件可以具有任何格式(文本,二进制等)。

Global site tag (gtag.js) - Google Analytics