一点一点前进...

0%

把字符串中的空格都替换成%20

关于字符串操作的问题,有一个普适的方法,从后往前来处理字符串。因为我们往往会开一个足够大的缓冲区去放置替换后的字符串,从后往前遍历操作,不用考虑正在被操作的字符被覆盖。

我们需要扫描两次字符串。第一次的目的是统计有多少个空格,这样我们就能确定替换之后的字符串的长度了;第二次从后往前,将空格替换成%20,如果是非空格字符,我们直接拷贝原始的字符就好了。

使用C#来模拟操作这个字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static string ReplaceSpaces(string s)
{
int spaceCount = 0;
int newLength;
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ' ')
{
spaceCount++;
}
}

newLength = s.Length + 2 * spaceCount;
char[] newString = new char[newLength];
for (int i = s.Length - 1; i >= 0; i--)
{
if (s[i] == ' ')
{
newString[newLength - 1] = '0';
newString[newLength - 2] = '2';
newString[newLength - 3] = '%';
newLength -= 3;
}
else
{
newString[newLength - 1] = s[i];
newLength--;
}
}

return new string(newString);
}