# String.prototype.trim

trim函数主要的功能是替换字符串首尾的空格,但是有些时候还有去掉字符串指定字符的需求,因此,我们可以对其增强。

既然是增强,当然不能改变其本来都能力,如果用户按原本的规则调用,直接去掉空格就好。

如果用户想指定取出字符串首尾指定的字符串,允许传入普通字符和正则表达式进行替换。

实现如下:

(function () {
  let nativeTrim =
    String.prototype.trim ||
    function trim() {
      return this.replace(/^\s*|\s*$/g, "");
    };
  String.prototype.trim = function (char) {
    if (typeof char === "undefined") {
      return nativeTrim.apply(this);
    }
    if (char instanceof RegExp) {
      char = char.source;
    } else {
      // 替换转义字符,防止将其识别成了正则表达式
      char = char.replace(/\\/g, "\\\\");
    }
    // 声明正则表达式的替换规则
    const regExp = new RegExp(`^${char}*|${char}*$`, "g");
    return this.replace(regExp, "");
  };
})();