忽略大小写从一个字符串中查找另一个字符串,最常用的是shlwapi.h中的StrStrI,函数原型如下:

LPTSTR StrStrI(      LPCTSTR lpFirst,LPCTSTR lpSrch
);

但是经过测试,这个函数效率很低,自己需要查询的数据量又很大,重新写一个吧。

// 函数功能:查找首个字符在搜索池中的偏移位置
LPCTSTR __stdcall FindFirstChar(__in LPCTSTR lpszText, __in TCHAR cch)
{if (lpszText == NULL || lpszText[0] == _T('\0')) return NULL;if (cch == _T('\0'))    return NULL;size_t nTextLen = _tcslen(lpszText);TCHAR cchText = _T('\0');for (size_t i = 0; i < nTextLen; i++){if (lpszText[i] >= 65 && lpszText[i] <= 90)    // 如果是大写,转换成小写cchText = lpszText[i] + 32;elsecchText = lpszText[i];if (cch >= 65 && cch <= 90)                    // 如果是大写,转换成小写cch = cch + 32;if (cch == lpszText[i])return lpszText + i;}return NULL;
}LPCTSTR __stdcall _StrStrI(__in LPCTSTR lpszText, __in LPCTSTR lpszPattern)
{if (lpszText == NULL || lpszText[0] == _T('\0')) return NULL;if (lpszPattern == NULL || lpszPattern[0] == _T('\0'))    return NULL;size_t nTextLen = _tcslen(lpszText);size_t nPatternLen = _tcslen(lpszPattern);if ( nPatternLen > nTextLen )        return NULL;// 查找首个字符在搜索池中的偏移位置,在数据量比较大的情况下,能有效降低时间复杂度LPCTSTR lpszStartPoint = FindFirstChar(lpszText, lpszPattern[0]);if (lpszStartPoint == NULL)return NULL;LPCTSTR lpszEndPoint = lpszText + nTextLen;for ( LPCTSTR p = lpszStartPoint; p != lpszEndPoint; p++){size_t i = 0;TCHAR cchText = _T('\0'), cchPattern = _T('\0');BOOL bFound = TRUE;for (size_t j = 0; i < nPatternLen; j++){if (lpszPattern[j] >= 65 && lpszPattern[j] <= 90)  // 如果是大写,转换成小写cchPattern = lpszPattern[j] + 32;elsecchPattern = lpszPattern[j];if (p[j] >= 65 && p[j] <= 90)  // 如果是大写,转换成小写cchText = p[j] + 32;elsecchText = p[j];if (cchPattern != cchText)      // 匹配失败,本轮查找结束{bFound = FALSE;break;}i++;}if (bFound == TRUE)return p + i - nPatternLen;}return NULL;
}

经过实测,消耗时间大约是StriStrI函数的三分之一,还是值得的。

自己写的忽略大小写查找字符串的子串的函数相关推荐

  1. vim 忽略大小写查找字符串

    Vim 忽略大小写查找字符串 Vim被认为是高效的代码管理工具,可想而知,平时利用vim进行代码编辑的程序员是多么厉害. 一.方法一 二.方法二 方法:底行模式下,输入命令 set ignorecas ...

  2. vim之vim忽略大小写查找字符串

    方法一: 查找时使用\c参数.进入底行模式,输入命令"/string\c " 或 "/\cstring",将会忽略大小写查找string字符串. 注意:\c与字 ...

  3. Bailian2721 忽略大小写比较字符串大小(POJ NOI0107-16)【字符串】

    问题链接:POJ NOI0107-16 忽略大小写比较字符串大小. 忽略大小写比较字符串大小 总时间限制: 1000ms 内存限制: 65536kB 描述 一般我们用strcmp可比较两个字符串的大小 ...

  4. linux find 忽略大小写查找文件

    find作为查找文件工具,功能强大,下面总结了忽略大小写查找文件方法,希望对大家有用. 查找命令:find  搜索路径   -iname   "文件名". 注意:find 命令不能 ...

  5. python 字符串比较忽略大小写的方法_python实现忽略大小写对字符串列表排序的方法...

    本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧.分享给大家供大家参考.具体分析如下: 先来看看如下代码: string = ''' the stirng Has ma ...

  6. strcasecmp()--忽略大小写比较字符串

    strcasecmp()的功能是:忽略大小写比较字符串 头文件 #include <strings.h> 函数原型:int strcasecmp(const char *s1, const ...

  7. 1.7 编程基础之字符串 16 忽略大小写的字符串比较 python

    http://noi.openjudge.cn/ch0107/16/ """1.7 编程基础之字符串 16 忽略大小写的字符串比较 http://noi.openjudg ...

  8. 北大OJ百练——2721:忽略大小写比较字符串大小

    这题很简单,就是一个大小写转换的算法,可能有一个函数专门做这个事,大家可以查查,我想应该是有的. 那么我的代码思路就是一个个去比较,不管它是大写字母还是小写字母,都一并把它们都专成小写字母,再去比较. ...

  9. python忽略大小写_Python字符串忽略大小写实现搜索和替换

    为了针对字符串操作忽略大小写,我们可以使用re模块的时候利用re.IGNORECASE标记参数来达到效果,示例如下: #!/usr/bin/env python3 # _*_coding:utf-8_ ...

最新文章

  1. 别再折腾开发环境了,一劳永逸的搭建方法
  2. python可以自学吗-没学过编程可以自学python吗
  3. python中print怎么用_python的print怎么用
  4. Spark2内存调优总结 - 内存划分 与 内存计算 与 调参方式
  5. 大流量场景下如何云淡风轻地进行线上发布?
  6. 广西壮族自治区直流充电桩说明书下载_鄂州便携式直流充电桩
  7. finder怎么才能找到library
  8. B-TrunC标准加入ITU集群国际标准
  9. 【问题解决方案】Markdown正文中慎用星号否则容易变斜体
  10. SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
  11. Luogu1514 引水入城
  12. 计算机游戏优化,Win10电脑玩游戏优化方法!必须关闭这几个设置,效果提升巨大...
  13. Ubuntu下使用外置USB无线网卡
  14. Makefile 自动化变量及其说明
  15. SparkSteaming整合Kafka的方式
  16. 人工智能实践作业-修道士和野人过河问题
  17. tf.estimator.train_and_evaluate 详解
  18. 互联网数据挖掘与分析讲解
  19. 大型网站seo布局怎么做
  20. Android三大按钮,模拟Android导航栏三大金刚按键点击

热门文章

  1. awgn函数 matlab measure 什么意思,Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义...
  2. Android和win10的融合,微软Windows10更新版亮相 更好融合iOS、Android系统
  3. Laragon集成环境安装
  4. GBDT,XGBoost和LightBoost对比
  5. HTML5期末大作业:官网时尚购物(网站设计——美丽说官网时尚购物(1页) HTML+CSS+JavaScript 网页设计成品DW静态网页Html5响应式css3
  6. 后台架构设计—数据存储层
  7. 团队执行力(企业管理培训)
  8. Sencha的Eclipse插件提示和技巧
  9. git操作如何提出你的第一个PR
  10. Matlab基于元胞自动机实现NaSch模型