题目
请实现一个函数,将一个字符串中的每个空格替换成“%20”
。例如,当字符串为We Are Happy
。则经过替换之后的字符串为We%20Are%20Happy
。
代码
1.直接用空格将字符串切割成数组,再用20%
进行连接。
function replaceSpace(str) { return str.split(' ').join('%20'); }
2.用正则表达式找到所有空格依次替换
function replaceSpace(str) { return str.replace(/s/g,'%20'); } 或者 function replaceSpace(str) { return str.replace(/[' ']/g,'%20') }
拓展
允许出现多个空格,多个空格用一个20%
替换:
用正则表达式找到连续空格进行替换
function replaceSpace(str) { return str.replace(/s+/g,'%20'); }
C++
void ReplaceBlank(char str[], int length) { if(str == nullptr && length <= 0) return; /*originalLength字符串实际长度*/ int originalLength = 0; int numberOfBlank = 0; int i = 0; while(str[i] != ' ') { ++ originalLength; if(str[i] == ' ') ++ numberOfBlank; ++ i; } /*newLength 把空格替换成20%之后的长度*/ int newLength = originalLength + numberOfBlank * 2; if(newLength > length) return; int indexOfOriginal = originalLength; int indexOfNew = newLength; while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) { if(str[indexOfOriginal] == ' ') { str[indexOfNew --] = '0'; str[indexOfNew --] = '2'; str[indexOfNew --] = '%'; } else { str[indexOfNew --] = str[indexOfOriginal]; } -- indexOfOriginal; } }