【发布时间】:2021-05-01 07:58:13
【问题描述】:
这段代码非常适合字符串替换,但它区分大小写,这正是我需要的:
WCHAR *StringReplaceEx(CONST WCHAR *orig, CONST WCHAR * pattern, CONST WCHAR *repl, WCHAR *sOut)
{
wstring wsoriginal = orig;
wstring wspatterntofind = pattern;
wstring wsreplacement = repl;
wstring wsOut = string_replace(wsoriginal, wspatterntofind, wsreplacement);
StringCchCopy(sOut, wcslen(wsOut.c_str())+1, wsOut.c_str());
return sOut;
}
wstring string_replace( wstring src, wstring const& target, wstring const& repl)
{
if ((target.length() == 0) || (src.length() == 0))
return src;
size_t idx = 0;
for (;;)
{
idx = src.find( target, idx);
if (idx == wstring::npos)
break;
src.replace( idx, target.length(), repl);
idx += repl.length();
}
return src;
}
这非常有效,但前提是字符串大小写匹配。
有没有办法进行不区分大小写的替换?
【问题讨论】:
-
我认为Unicode表示的大多数字符集都没有区分大小写的定义。
-
@RichardCritten -- 有一个 Unicode 表可以映射小写、大写和首字母大写字符。它可用于在 Unicode 上实现不区分大小写的操作。但是,C++ 中的 Unicode 支持相当差,您必须自己实现它,很可能使用第三方 Unicode 库。
标签: c++ case-insensitive wstring