查找字符串问题
RT:
我想要查找字符串,怎么才能不区分大小写呢?之前也在网上查过资料,比如CString类可以先把字符串转成大写或者小写的。这样不能解决这个问题,因为显示的时候就把原来的大小写改变了。
[解决办法]
MakeUpperConverts all the characters in this string to uppercase characters.
MakeLowerConverts all the characters in this string to lowercase characters.
[解决办法]
1、单独声明一个CString,把显示内容拷贝过来,MAKEUPPER,再查,不影响显示;
2、strnicmp,忽略大小写。
[解决办法]
2个变量,1放你原来的字符串,用于显示,2放你查找到的字符串
你就分两次找,按小写一次,按大写一次
[解决办法]
这个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;
}
}
[解决办法]
变通一下
找的是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);