当前位置: 代码迷 >> 综合 >> 一种替换字符串的思路
  详细解决方案

一种替换字符串的思路

热度:40   发布时间:2024-02-07 14:06:22.0

网络编程经常存在替换字符串中指定字符为另一种字符,如将字符串中的空格字符替换为“%20”,

例子:

原字符串:we are happy.

替换后字符串:string=we%20are%20happy.

 

一种思路:

一个空格字符替换成“%20”多了两个字符的位置,所以先遍历一遍字符串,找出字符串中存在的空字符个数N,然后使用N*2加上原来的字符长度即为新的字符长度,之后定义两个游标p1,p2,p1指向原字符串的最后一个字符,而p2指向新字符串的最后一个字符,开始p1向前移动,如果p1指的是字符,则将p1所指向字符复制到p2所指的位置,复制后p2向前移动一步,如碰到空格字符则p2多走两个位置,即将空格位置替换为“%20”。

 

#include <iostream>
using namespace std;void ReplaceBlank(char string[],int length){if(string==nullptr || length <=0)return;int spaceNum=0;int originalLength=0;int nIndex=0;while(string[nIndex]!='\0'){++originalLength;if(string[nIndex]==' ')++spaceNum;++nIndex;}int newLength=originalLength+spaceNum*2;if(newLength>length)return;int newIndex=originalLength;int newEnd=newLength;while (newEnd>newIndex && newIndex>0){if(string[newIndex]==' '){string[newEnd--]='0';string[newEnd--]='2';string[newEnd--]='%';}else{string[newEnd--]=string[newIndex];}--newIndex;}
}int main(){char string[20]="we are happy.";ReplaceBlank(string,sizeof(string));cout<<"string="<<string<<endl;return 0;
}

 

  相关解决方案