程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 替換空格,excel替換空格

替換空格,excel替換空格

編輯:C++入門知識

替換空格,excel替換空格


題目:請實現一個函數,把字符串中的每個空格替換成“%20”。例如輸入“We are happy.”,則輸出“We%20are%20happy.”。

思路:我們可以先遍歷一次字符串,這樣就能統計出字符串中空格的總數,並可以由此計算出替換之後的字符串的總長度。每替換一個空格,長度增加2,因此替換以後字符串的長度等於原來的長度加上2乘以空格數目。我們以字符串"We are happy."為例,"We are happy."這個字符串的長度是14(包括結尾符號'\0'),裡面有兩個空格,因此替換之後字符串的長度是18。

      我們從字符串的後面開始復制和替換。首先准備兩個指針,P1和P2。P1指向原始字符串的末尾,而P2指向替換之後的字符串的末尾(如圖(a)所示)。接下來我們向前移動指針P1,逐個把它指向的字符復制到P2指向的位置,直到碰到第一個空格為止。此時字符串包含如圖(b)所示,灰色背景的區域是做了字符拷貝(移動)的區域。碰到第一個空格之後,把P1向前移動1格,在P2之前插入字符串"%20"。由於"%20"的長度為3,同時也要把P2向前移動3格如圖(c)所示。

     我們接著向前復制,直到碰到第二個空格(如圖(d)所示)。和上一次一樣,我們再把P1向前移動1格,並把P2向前移動3格插入"%20"(如圖(e)所示)。此時P1和P2指向同一位置,表明所有空格都已經替換完畢

 

 1 #include <string>
 2 #include "stdafx.h"
 3 
 4 void ReplaceBlank(char string[], int length)
 5 {
 6     if(string == NULL && length <= 0)
 7         return;
 8 
 9     int originalLength = 0;
10     int numberOfBlank = 0;
11     int i = 0;
12 
13     while(string[i] != '\0')
14     {
15         ++ originalLength;
16 
17         if(string[i] == ' ')
18             ++ numberOfBlank;
19 
20         ++ i;
21     }
22     
23     //newLength 為把空格替換為'%20'之後的長度 
24     int newLength = originalLength + numberOfBlank * 2;
25     if(newLength > length)
26         return;
27 
28     int indexOfOriginal = originalLength;
29     int indexOfNew = newLength;
30     
31     //若沒有空格 直接跳過 
32     while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal)
33     {
34         if(string[indexOfOriginal] == ' ')
35         {
36             string[indexOfNew --] = '0';
37             string[indexOfNew --] = '2';
38             string[indexOfNew --] = '%';
39             //先使用再減一 
40         }
41         else
42         {
43             string[indexOfNew --] = string[indexOfOriginal];
44         }
45 
46         -- indexOfOriginal;
47     }
48 }
49 
50 int main()
51 {
52     const int length = 100;
53 
54     char string[length] = "We are happy";
55     printf("%s\n",string);
56     ReplaceBlank(string, length);
57     printf("%s\n",string);
58     
59     char string1[length] = " ";
60     printf("%s\n", string1);
61     ReplaceBlank(string1, length);
62     printf("%s\n", string1);
63     
64     return 0;
65 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved