1. 描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2.思路:正则表达式匹配所有空格,配合replace()函数
3. 代码
function replaceSpace(str){
if(str && typeof str === "string"){
// 替换所有空格
return str.replace(/\s/g, "%20");
// 去掉开头和结束的空格
return str.replace(/^\s|\s$/g,'%20');
// 去掉中间的空格,而保留开头和结尾的空格
return str.replace(/(\S)\s+(\b)/g,'$1$2')
}
}
console.log(replaceSpace(" We Are Happy "));
4. 结果
%20We%20Are%20Happy%20
%20We Are Happy%20
WeAreHappy
5. 总结
- replace()函数
- \s 表示匹配所有的不可见字符,包括空格、制表符、换页符等等
- \S 表示匹配所有可见字符
- | 在正则中表示或
- ^$ 表示开头和结尾
- \w 表示[a-zA-Z0-9]
- \b 表示匹配单词的边界,不匹配任何字符;\b是0宽度的;一侧是构成单词的字符,另一侧是非单词字符、字符串的开始或结束。比如“ We Are Happy ”中W,e, ,等包括空白字符都会占一个位置,可以叫“显式位置”;而W和e中间的位置,叫“隐式位置”,\b就是这个隐式位置;而\b匹配的位置是:它的前一个字符和后一个字符不全是\w
var str = 'hello hlo world fjw hlo';
// 匹配 hlo 这个单词,第一个\b前面一个字符是空
var reg = /\bhlo\b/g
var test = str.replace(reg,'hhhh');
console.log(test) // hello hhhh world fjw hhhh