字符串间的替换

来源:互联网 发布:织梦dede在线客服插件 编辑:程序博客网 时间:2024/06/10 07:24

采用顺序存储方式存储串,编写一个指环函数,将串s1中的第i个字符开始的以第J个字符结束的字符构成的子川用s2进行替换,函数名为replace(s1,i,j,s2).例如replace("abcd",1,3,"xyz")返回"xyzd"

strtype *replace(strtype *s1,int i,int j,strtype *s2)
{
 if(i<0 ||i>len(s1))
 {
  cout<<"i不合适"<<endl;
  return s1;
 }
 if(j<i ||j>len(s1))
 {
  cout<<"j不合适"<<endl;
  return s1;
 }
 int k,t;
 if(j-1+1==len(s2))
 {
  for(k=i-1,t=0;t<len(s2);k++,t++)
  {
   s1->ch[k]=s2->ch[t];   
  }
  return s1;
 }
 else if(j-i+1>len(s2))
 {
  for(k=j;k<=len(s1);k++)
   s1->ch[k-(j-i+1-len(s2))]=s1->ch[k];
  for(k=i-1,t=0;t<len(s2);k++,t++)
   s1->ch[k]=s2->ch[t];
  s1->len=s1->len-(j-i+1)+len(s2);
  return s1;
 }
 else if(j-i+1<len(s2))
 {
  for(k=len(s1)-1;k>=j;k--)
  {
   s1->ch[k+len(s2)-(j-i+1)]=s1->ch[k];
  }
  for(k=i-1,t=0;t<len(s2);t++,k++)
  {
   s1->ch[k]=s2->ch[t];
  }
  s1->len=s1->len+len(s2)-(j-i+1);
  return s1;
 }
}

原创粉丝点击