字符串替换
/*用s2串替换s中的s1串*/ void replace(TCHAR *s,TCHAR *s1,TCHAR *s2) { int nLen=lstrlen(s); int nLen1=lstrlen(s1); int nLen2=lstrlen(s2); for(int i=0;i<nLen-nLen1+1;i++) { bool bSame=true; for(int j=0;j<nLen1;j++) { if(s[i+j]!=s1[j]) { bSame=false; break; } } if(!bSame) { continue; } //i+nLen1是原来的字符串的后面部分开始 if(nLen1>nLen2) { //替换后字符串变短nLen1-nLen2 for(int k=0;k<nLen2;k++) { s[i+k]=s2[k]; } for(int l=i+nLen2;l<nLen+nLen2-nLen1;l++) { s[l]=s[l+nLen1-nLen2]; } for(int m=nLen+nLen2-nLen1;m<nLen;m++) { s[m]='\0'; } nLen=lstrlen(s); i=i+nLen2; } else if(nLen2>nLen1) { //替换后字符串变长了nLen2-nLen1 //先将替换时占用到的位置整体后移 for(int l=nLen+nLen2-nLen1;l>=i+nLen2;l--) { s[l]=s[l+nLen1-nLen2]; } for(int k=0;k<nLen2;k++) { s[i+k]=s2[k]; } nLen=lstrlen(s); i=i+nLen2; } } }查看完整版本: 字符串替换
Tags: