gpt4 book ai didi

c++ - 在 C++ 中替换不区分大小写的子字符串

转载 作者:行者123 更新时间:2023-11-30 01:41:54 30 4
gpt4 key购买 nike

我需要替换字符串中的子字符串。例如:

输入:

Always

Never

I will always run. ALWAYS!

输出:

I will never run. NEVER!

replacefind 工作正常。但是,问题是区分大小写的。我有这个简单的功能可以做到这一点,但这是不完整的。

string subTag(string s,string a,string b)
{
while(s.find(a)!=-1){
s.replace(s.find(a), a.size(), b);
}

return s;
}

如何使搜索过程不区分大小写?

最佳答案

将原始字符串和搜索短语都转换为小写,然后搜索:

string subTag(string s,string a,string b){
std::string lower_s;
std::transform(s.begin(), s.end(), lower_s.begin(), ::tolower);
std::transform(a.begin(), a.end(), a.begin(), ::tolower);
auto position=lower_s.find(a);
while(position!=std::string::npos){
s.replace(position, a.size(), b);
position=lower_s.find(a);
}
return s;
}

注意事项:

  1. 您必须保留原始的 ,因为您需要在不更改大小写的情况下将其退回。
  2. 您可以直接更改 a 的大小写,因为您不再使用它了。
  3. 您不需要更改 b 的大小写,因为您根本没有使用它进行搜索。

关于c++ - 在 C++ 中替换不区分大小写的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40577339/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com