如何将字符串的特定部分替换为另一个文本
How to replace specific part of a string with another text?
我正在解决Reddit上的挑战
而且我找不到如何用另一个字符串替换字符串的特定文本。我设法找出如何检查该特定文本是否存在,但是我在用另一个文本替换它或将其从字符串中完全删除时遇到了问题(因为挑战需要这样做)。
这是我到目前为止的代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int law (string a);
int main() {
string a;
cin >> a;
cout << law(a) << endl;
return 0;
}
int law(string a){
if (a.find("NOT") != string::npos)
return a.replace(a.begin(), a.end(), ' ');
if(a.find("NOT") != string::npos && ((a.find("AND") == string::npos) || (a.find("OR") == string::npos)))
return a.erase(remove(a.begin(), a.end(), "NOT"), a.end());
}
您可以搜索子字符串位置,然后将 的每个字符分配给原始字符串:
void replace( std::string& input_string , const std::string& searched_string , const std::string& replace_string )
{
std::size_t replace_pos = input_string.find( searched_string );
if( replace_pos != std::string::npos )
{
std::copy( std::begin( replace_string ) ,
std::end( replace_string ) ,
std::begin( input_string ) + replace_pos
);
//Or with a simple for loop (Which is what std::copy does):
for( std::size_t i = 0 ; i < replace_string.size() ; ++i )
input_string[i + replace_pos}] = replace_string[i];
}
}
此解决方案的要点是,根本没有理由使用昂贵的字符串连接来替换文本。
考虑包含三个部分的结果字符串:
- 原始字符串的开头部分
- 替换文本
- 原始字符串的结尾部分
您可以使用 string.substr()
获取原始字符串的开头和结尾部分。 代码将如下所示:
string originalString; // given
string partToReplace; // given
string replacementText; // given
int positionOfText = originalString.find(partToReplace);
string resultString = originalString.substr(0, positionOfText);
resultString += replacementText;
resultString += originalString.substr(positionOfText + partToReplace.length());
相关文章:
- 如何在 c++ 中定义一个将被另一个短语替换的短语?
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- C++:递归地将字符串中一个字母的所有实例替换为另一个字母
- 如何将一个范围替换为矢量中的另一个范围?
- 使用C++将一个字符串替换为另一个字符串
- 用一个向量替换另一个向量的方法
- 将字符串中的单个单词替换为另一个单词
- 将文本流中一个字符串的所有匹配项替换为另一个字符串
- 将一个地图的内容附加并替换为另一个地图
- 如何从C++的输入中查找字符串并将其替换为另一个字符串
- 我可以使用预处理器将一个类型声明替换为另一个类型声明吗?
- 如何查找查看一个字符串是否位于另一个字符串内部并替换它
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 如何将文件复制到另一个文件中,但是用用户输入的单词替换单词
- 将 C++ std::string 中的字符/字符序列替换为另一个字符序列
- C 如何在数组中替换另一个字符串的字符串
- 为什么我可以替换文本文件中的一个单词,而不能替换另一个单词
- C++ 替换另一个文件中的宏
- 在Makefile中添加/替换另一个Makefile中的字符串
- 在c++中用一个宏替换另一个宏