比如给定字符串,abc123x123x123,我们要删除里面的123子串,并替换成4567串
代码如下
第一种方法直接利用STL中string的find和insert方法,第二种是原始的遍历建立辅助数组
#include <iostream>
#include <string>
using namespace std;
void DeleteTheSpecialStringOne(string str,string delString,string addString)
{
int pos;
while((pos=str.find(delString))!=string::npos)
{
str.erase(pos,delString.length());
str.insert(pos,addString);
}
cout<<str<<endl;
}
void DeleteTheSpecialStringTwo(string str,string delString,string addString)
{
int i=0,j=0;
int a[100];
for(i=0;i<str.length();i++)
{
a[i]=1;
if(str[i]==delString[j])
{
j++;
}
else
{
if(j==delString.length())
{
for(int k=i-delString.length();k<i;k++)
{
a[k]=0;
}
}
j=0;
}
}
if(j==delString.length())
{
for(int k=i-delString.length();k<i;k++)
{
a[k]=0;
}
}
string end="";
i=0;
while(i<str.length())
{
if(a[i]==1)
{
end+=str[i];
i++;
}
else
{
end+=addString;
i+=delString.length();
}
}
cout<<end<<endl;
}
int main()
{
//NumOfString("A-1B--2C--D6E");
string str="123abcxxabcxxabc";
string delString="abc";
string addString="4567";
DeleteTheSpecialStringTwo(str,delString,addString);
return 0;
}