在字符串中删除特定子串,并添加上制定串

比如给定字符串,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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值