首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

查找字符串有关问题

2013-03-10 
查找字符串问题RT:我想要查找字符串,怎么才能不区分大小写呢?之前也在网上查过资料,比如CString类可以先把

查找字符串问题
RT:
  我想要查找字符串,怎么才能不区分大小写呢?之前也在网上查过资料,比如CString类可以先把字符串转成大写或者小写的。这样不能解决这个问题,因为显示的时候就把原来的大小写改变了。

[解决办法]
MakeUpperConverts all the characters in this string to uppercase characters.
MakeLowerConverts all the characters in this string to lowercase characters.
[解决办法]

引用:
RT:
  我想要查找字符串,怎么才能不区分大小写呢?之前也在网上查过资料,比如CString类可以先把字符串转成大写或者小写的。这样不能解决这个问题,因为显示的时候就把原来的大小写改变了。

1、单独声明一个CString,把显示内容拷贝过来,MAKEUPPER,再查,不影响显示;
2、strnicmp,忽略大小写。
[解决办法]
2个变量,1放你原来的字符串,用于显示,2放你查找到的字符串
你就分两次找,按小写一次,按大写一次
[解决办法]
引用:
忘记补充一个问题,找到后需要替换字符串并显示,例如环境变量那种。strnicmp 好像只是比较字符串是否相等,不能用于查找的吧。
MakeUpper和MakeLower 我说过了是可以,但是显示的时候字符的大小写不就变了嘛


这个strnicmp可以用来查找的,要自己写代码而已
CString str1 = "%SysTEM%\\xx.exe";
char *p = (char*)str1;
for (int n = 0; n < str1.GetLength(); n ++)
{
  if (strnicmp(&p[n], "%SYSTEM%") == 0)
  {
    // 找到
    break;
  }
}


[解决办法]
引用:
引用:2个变量,1放你原来的字符串,用于显示,2放你查找到的字符串
你就分两次找,按小写一次,按大写一次
不行吧,比如%SYSTEM%\\xx.exe,系统或者其他地方给你传过来的不一定是%SYSTEM%\\xx.exe,也有可能是%SysTEM%\\xx.exe等等,所以在查找的时候要大小写忽略。最后要显示成C:\windows\xx……


变通一下
找的是str2,得到的位置,也是str1中需要替换的位置
CString str1 = _T"%SysTEM%\\xx.exe");
CString str2 = str1;
str2.MakeUpper();

CString str3 = _T("%SYSTEM%");
int n = str2.Find(str3);
CString str4 = _T("C:\\windows");

CString str5 = str1.Mid(n + str3.GetLength());
CString str6 = str4 + str5;

// 或者
CString str7 = str1.Mid(n, str3.GetLength());
str1.Replace(str7, str4);

热点排行