Replace求教

worldy 2013-10-06 01:01:28
CString类的Reolace/Find函数是大小写敏感的(悲催,怎么没有控制选项?),要对大小写不敏感的子串进行替换/或查找该使用什么函数?

全局函数,c函数都可以,谢谢
...全文
232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
华美乐章 2013-10-09
  • 打赏
  • 举报
回复
你把源的字符串和需要查找的字符串统一成 大写or小写 在去find不就哦了。
真相重于对错 2013-10-09
  • 打赏
  • 举报
回复
引用 8 楼 zgl7903 的回复:
[quote=引用 6 楼 worldy 的回复:] [quote=引用 5 楼 zgl7903 的回复:] 组合一下
void ReplaceNoCase(CString &src, LPCTSTR szFind, LPCTSTR szReplace)
{
  CString tmp = src;
  tmp.MakeUpper();
  CString find = szFind;
  find.MakeUpper();
  int iFind = tmp.Find(find);
  if(iFind != -1) 
  {
    src.Delete(iFind, find.GetLength());
    src.Insert(iFind, szReplace);
  }
}
谢谢回复,但是,没有被替换的部分要保持原来的大小写,替换串必须保持为调用时的大小写, 比如 aBc 替换为MPAds[/quote] 原来的字串的大小写并没有变啊 [/quote] 如果你不想用stl::regex ,你可以这样按以上代码,记录find的位置,替换他
zgl7903 2013-10-09
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
[quote=引用 5 楼 zgl7903 的回复:] 组合一下
void ReplaceNoCase(CString &src, LPCTSTR szFind, LPCTSTR szReplace)
{
  CString tmp = src;
  tmp.MakeUpper();
  CString find = szFind;
  find.MakeUpper();
  int iFind = tmp.Find(find);
  if(iFind != -1) 
  {
    src.Delete(iFind, find.GetLength());
    src.Insert(iFind, szReplace);
  }
}
谢谢回复,但是,没有被替换的部分要保持原来的大小写,替换串必须保持为调用时的大小写, 比如 aBc 替换为MPAds[/quote] 原来的字串的大小写并没有变啊
真相重于对错 2013-10-09
  • 打赏
  • 举报
回复
如果你用stl::string 的话可以这样 regex pattern("abc",regex::icase); string str="Abc123"; string str1=regex_replace(str,pattern,""); CString 和stl::string互转也是相当简单的
zgl7903 2013-10-08
  • 打赏
  • 举报
回复
组合一下
void ReplaceNoCase(CString &src, LPCTSTR szFind, LPCTSTR szReplace)
{
  CString tmp = src;
  tmp.MakeUpper();
  CString find = szFind;
  find.MakeUpper();
  int iFind = tmp.Find(find);
  if(iFind != -1) 
  {
    src.Delete(iFind, find.GetLength());
    src.Insert(iFind, szReplace);
  }
}
worldy 2013-10-08
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
组合一下
void ReplaceNoCase(CString &src, LPCTSTR szFind, LPCTSTR szReplace)
{
  CString tmp = src;
  tmp.MakeUpper();
  CString find = szFind;
  find.MakeUpper();
  int iFind = tmp.Find(find);
  if(iFind != -1) 
  {
    src.Delete(iFind, find.GetLength());
    src.Insert(iFind, szReplace);
  }
}
谢谢回复,但是,没有被替换的部分要保持原来的大小写,替换串必须保持为调用时的大小写, 比如 aBc 替换为MPAds
threenewbee 2013-10-06
  • 打赏
  • 举报
回复
这还不简单,将查找和被查找的文本全部转换为大写或者小写即可。 至于函数名,自己查找下,是ToUpper ToLower 和 IndexOf 么?
worldy 2013-10-06
  • 打赏
  • 举报
回复
谁有封装好的函数啊,贡献一个,正则表达式不太懂啊
oyljerry 2013-10-06
  • 打赏
  • 举报
回复
这个看上去只有正则了
rxguoblp 2013-10-06
  • 打赏
  • 举报
回复
可以考虑使用封装好的正则表达式类库。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧