1. 剑指offer——替换空格

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. 总结

  1. replace()函数
  2. \s 表示匹配所有的不可见字符,包括空格、制表符、换页符等等
  3. \S 表示匹配所有可见字符
  4. | 在正则中表示或
  5. ^$ 表示开头和结尾
  6. \w 表示[a-zA-Z0-9]
  7. \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
点赞